PDA

View Full Version : تغيير اندازه خودكار يك lable روي فرم



خسرو خان
شنبه 25 دی 1389, 11:25 صبح
سلام
روي فرم يه lable دارم كه مي خوام فرم به اندازه lable تغيير اندازژه بده .

چه از لحاظ طولي و چه از لحاظ عرضي

ممنون

SilverGold
شنبه 25 دی 1389, 11:31 صبح
متاسفانه در وی بی دات نت با متن لیبل تغییر اندازه می دهد دیشب هم من خیلی سعی کردم این کار را انجام بدهم متاسفانه موفق نشدم

ahrimaneahurai
شنبه 25 دی 1389, 11:52 صبح
توی load فرم کد زیر رو بذار

this.Size = new Size(100, 100);
سایز فرم عوض میشه

خسرو خان
شنبه 25 دی 1389, 12:01 عصر
توی load فرم کد زیر رو بذار

this.Size = new Size(100, 100);
سایز فرم عوض میشه

از پاسخي كه دادي ممنون
ولي اين كد به درد من نميخوره
مثلا همين message box خود c# رو اگه دقت كني هر چقدر متن پيغام زياد باشه message box هم به همون نسبت بزرگ ميشه

ahrimaneahurai
شنبه 25 دی 1389, 12:04 عصر
خب می تونی بعد از اینکه اندازه لیبلت رو بدست آوردی سایز فرمت رو عوض کنی

mehdin69
شنبه 25 دی 1389, 12:07 عصر
يه tableLayoutPanel روي فرم بزار به يه ستون و رديف بعد تويش يه label قرار بده و خاصيت Dock label رو Fill كن
حالا سايز فرم رو با سايز tableLayoutPanel برابر قرار بده...

shuriken
شنبه 25 دی 1389, 12:32 عصر
سلام
دوست عزیز شما چندین راه برای اینکار پیش رو دارین.
یکیش همین راهیه که دوستمون در بالا گفتن.

یکی دیگه از راه ها که فکر میکنم دقیقترینشون هم باشه اینه که شما اندازه نوشتتون رو با استفاده از
توابع کلاس graphics بدست بیاری و اندازه فرمت رو با اون مقدار دهی کنی.


SizeF stringSize = Graphics.MeasureString(String, Font)

بعد هرجایی که نوشته لیبل رو تغییر دادید این کد رو وارد کنید.


form1.Size = Graphics.MeasureString(String, Font);


البته کدهای بالا بصورت انتزاعی هستند و شما باید انواع داده رو مقدار دهی کنید.

اگه بازم مشکلی بود در خدمتم

خسرو خان
شنبه 25 دی 1389, 15:05 عصر
سلام
دوست عزیز شما چندین راه برای اینکار پیش رو دارین.
یکیش همین راهیه که دوستمون در بالا گفتن.

یکی دیگه از راه ها که فکر میکنم دقیقترینشون هم باشه اینه که شما اندازه نوشتتون رو با استفاده از
توابع کلاس graphics بدست بیاری و اندازه فرمت رو با اون مقدار دهی کنی.


SizeF stringSize = Graphics.MeasureString(String, Font)

بعد هرجایی که نوشته لیبل رو تغییر دادید این کد رو وارد کنید.


form1.Size = Graphics.MeasureString(String, Font);


البته کدهای بالا بصورت انتزاعی هستند و شما باید انواع داده رو مقدار دهی کنید.

اگه بازم مشکلی بود در خدمتم

سلام
ممنون از راهنماي كه كردين .
ميشه يه مثال بزنيد .
ممنون

shuriken
یک شنبه 26 دی 1389, 13:33 عصر
البته اگه کدهارو خوب نگاه کنید دیگه احتیاج به راهنمایی نیست ولی سعی میکنم یک مثال بهتر بزنم



// Create a Graphics object for the Control.
Graphics g = control.CreateGraphics();

// Get the Size needed to accommodate the formatted Text.
Size preferredSize = g.MeasureString(
control.Text, control.Font).ToSize();



control هم میتونه لیبل باشه هم خود فرم و در واقع هر کنترلی میتونه باشه.
ولی از اونجایی که شما داری داخل لیبل مینویسی و ممکنه فونتش متفاوت باشه بهتره از خود
لیبلت استفاده کنی.
و بعد همونطور که قبلا گفتم کد زیر رو در جایی که میخوای نوشته لیبل رو تغییر بدی قرار بده.



//change label text
label1.text = "something";
// Create a Graphics object for the Control.
Graphics g = label1.CreateGraphics();

// Get the Size needed to accommodate the formatted Text.
Size preferredSize = g.MeasureString(
label.Text, label.Font).ToSize();
form1.Size = preferredSize;


البته توصیه میکنم فرمتون رو کامل اندازه نوشتتون نکنین و یمقدار از
هر طرف فاصله بذارین.