PDA

View Full Version : سوال: حذف متن خالی انتهای تکست باکس



SHD.NET
دوشنبه 18 دی 1391, 20:51 عصر
سلامو ..
در خصوص موضوع تاپیک نمیدونستم چی دیگه انتخاب کنم . بهترین موضوعی که به ذهنم رسید همین بود :لبخند:
و اما سوال :

مثلا ما یه تکست باکس با عرض 500 داریم، اونوقت متنی رو داخلش میخوایموارد نمی کنیم که نمیدونیم متنش چند کاراکتره
میخوایم وقتی اون متن مثلا 300 تا از عرض تکست باکس رو پر کرد ، مقدار حالی باقی مونده حذف بشه.
یعنی یع چیز تو مایه های AutoSize . نمیدونم منظورمو خوب رسوندم یا نه .

ممنون

ara_tz
دوشنبه 18 دی 1391, 21:11 عصر
سلام
منکه نفهمیدم چی گفتی! :قهقهه:
ولی اگر میخوای اندازه تکست باکست به اندازه ای که آخرین بار متنتو وارد کردی تغییر کنه میتونی یه دکمه بزاری که وقتی متنو وارد کردی، اندازه متنتو پیدا کنه و سایز تکست باکستو به اون اندازه ست کنه!

behzad_rainy
دوشنبه 18 دی 1391, 21:14 عصر
میتونی یه label ایجاد کنی بعد متن داخل textbox رو بزاری داخل label بعد سایز label هرچی بود سایز تکس باکس رو همون قرار بدی

System.Windows.Forms.Label lbl = new System.Windows.Forms.Label();
البته یه راه دیگه اینه که از گرافیک استفداه کنی و عرض پیکسل ها رو بدست بیاری ولی راه حل اول خیلی راحت تره:چشمک:

behzad_rainy
دوشنبه 18 دی 1391, 21:16 عصر
اینم میتونه کمکت کنه



protected override OnTextChanged(EventArgs e) {
using (Graphics g = CreateGraphics()) { SizeF size = g.MeasureString(Text, Font);
Width = (int)Math.Ceiling(size.Width);
} base.OnTextChanged(e);
}

SHD.NET
دوشنبه 18 دی 1391, 21:17 عصر
سلام
منکه نفهمیدم چی گفتی! :قهقهه:
ولی اگر میخوای اندازه تکست باکست به اندازه ای که آخرین بار متنتو وارد کردی تغییر کنه میتونی یه دکمه بزاری که وقتی متنو وارد کردی، اندازه متنتو پیدا کنه و سایز تکست باکستو به اون اندازه ست کنه!

دقیقا منظورم همین بود

SHD.NET
دوشنبه 18 دی 1391, 21:32 عصر
میتونی یه label ایجاد کنی بعد متن داخل textbox رو بزاری داخل label بعد سایز label هرچی بود سایز تکس باکس رو همون قرار بدی

System.Windows.Forms.Label lbl = new System.Windows.Forms.Label();
البته یه راه دیگه اینه که از گرافیک استفداه کنی و عرض پیکسل ها رو بدست بیاری ولی راه حل اول خیلی راحت تره:چشمک:

وقتی آتوسایز لیبل رو False کنم . دیگه اون تموم متنش توی یک خط نوشته میشه و نمیشه ازش برای این کار استفاده کرد

چی کا کنم . ؟؟ خودتون میشه یه نمونه بزارین ؟
اون کد هم به هم ریخته نشون میده . اگه با اون میشه مشکلو حل کرد لطفا یه بار دیگه بزاریدش

behzad_rainy
دوشنبه 18 دی 1391, 21:39 عصر
const int width = 100;
private void textBox1_TextChanged(object sender, EventArgs e)
Font font = new Font(txt.Font.Name, txt.Font.Size);
Size s = TextRenderer.MeasureText(txt.Text, font);
if (s.Width > width)
{
txt.Width = s.Width;
}
}

behzad_rainy
دوشنبه 18 دی 1391, 21:44 عصر
اینجوری متنت نسبت به اندازه تکس باکست کوچیک میشه یعنی اندازه تکس باکست ثابته

SHD.NET
دوشنبه 18 دی 1391, 22:09 عصر
اینجوری متنت نسبت به اندازه تکس باکست کوچیک میشه یعنی اندازه تکس باکست ثابته

حالا نمیشه یه کاری کرد که فقط عرض تکست باکسی نسبت به متن کوچیک و بزرگ بشه ؟؟

میخوام طول ثابت باشه و فقط عرضش تغییر کنه

behzad_rainy
سه شنبه 19 دی 1391, 10:25 صبح
اینجوری عرض تکس باکست تغییر میکنه به صورت داینامیک


protected override OnTextChanged(EventArgs e)
{
using (Graphics g = CreateGraphics())
{
SizeF size = g.MeasureString(Text, Font);
Width = (int)Math.Ceiling(size.Width);
}
base.OnTextChanged(e);
}