PDA

View Full Version : ایجاد تکس باکس با تعداد کاراکتر ثابت



pouria_bayat
سه شنبه 22 اردیبهشت 1394, 12:01 عصر
سلام دوستان، من یک Label دارم که فرضا اندازه اون 590 در 400 هستش حالا داخل این label میخواهم متن قرار بدم، میخواهم اندازه لیبل ثابت باشه و به طبع کاربر بتونه با هر فونتی و اندازه ای متن خودشو بزاره، اما نکته ای که هست اینه که من میخواهم از کاربر متن رو از طریق Textbox بگیرم و داخل Label نشون بدم، چند نکته وجود داره فرضا
اگر اندازه یا نوع فونت تغییر کرد ممکنه تعداد کاراکترهایی که میتونه اون Label نشون بده کم یا زیاد بشه مثلا با کوچک شدن اندازه فونت تعداد کاراکترهای بیشتر و با بزرگ شدن تعداد کاراکترهای کمتر.
لازم به ذکره که حتما باید اندازه Label ثابت باشه و نباید از Scroll استفاده کنم. حالا باید طوری به کاربر بفهمونم که با این فونت بیشتر از این نمیتونی متن بزاری!
حالا راهنمایی؟ چیکار کنم به نظرتون؟

Xcalivorse
سه شنبه 22 اردیبهشت 1394, 12:38 عصر
سلام دوست عزیز.
ببین richTextBox یک Event داره به نام Content Resizes که در اون میتونی با دستور e.NewRectangle طول و عرض متن داخل richTextBox رو بگیری و با مقایسه با ابعاد کنترلت بفهمی که از طول و عرض کنترلت میزنه بیرون یا نه. حالا میتونی یه کنترل richTextBox بسازی و فونت و اندازه رو با Label مورد نظرت تنظیم کنی و کارت رو پیش ببری.

Xcalivorse
سه شنبه 22 اردیبهشت 1394, 12:39 عصر
البته همونطور که میدونی کنترلت لازم نیست روی فرمت اضافه بشه و میتونی یک instance از richTextBox در حافظه بسازی.

pouria_bayat
سه شنبه 22 اردیبهشت 1394, 12:40 عصر
ممنون نمونه کدی دارید برای گرفتن اندازه از طریق e.NewRectangle، ممنون.

Xcalivorse
سه شنبه 22 اردیبهشت 1394, 12:42 عصر
private void richTextBox1_ContentsResized(object sender, ContentsResizedEventArgs e)
{
int width = e.NewRectangle.Width;
int height = e.NewRectangle.Height;
}

pouria_bayat
سه شنبه 22 اردیبهشت 1394, 12:44 عصر
private void RText_ContentsResized(object sender, ContentsResizedEventArgs e)
{
Console.Out.WriteLine(e.NewRectangle.Width.ToStrin g() + ": "+ e.NewRectangle.Height.ToString());

}

plus
سه شنبه 22 اردیبهشت 1394, 13:46 عصر
شما با استفاده از متد TextRenderer.MeasureText (https://msdn.microsoft.com/en-us/library/system.windows.forms.textrenderer.measuretext(v=vs .110).aspx)میتونید اندازه مورد نیاز یک Text با فونت مورد نظر و ... رو محاسبه کنید.