PDA

View Full Version : تعیین height کنترل richtextbox با توجه به تعداد خط متن موجود در آن



yekta64
شنبه 11 اردیبهشت 1389, 11:47 صبح
سلام دوستان
من یه کنترل richtextbox دارم که از دیتابیس پر میشه حالا می کنم hieght اون با توجه بع تعداد خط های که پر شده تغییر کنه باید چکار کنم؟؟؟؟

ممنون از همه دوستان

alireza_s_84
شنبه 11 اردیبهشت 1389, 12:27 عصر
سلام دوستان
من یه کنترل richtextbox دارم که از دیتابیس پر میشه حالا می کنم hieght اون با توجه بع تعداد خط های که پر شده تغییر کنه باید چکار کنم؟؟؟؟

ممنون از همه دوستان
شما باید با توجه به طول richtextbox تعداد کارکترهایی که در یک سطر قرار میگیرند رو محاسبه کنید که این با تغییر فونت هر سطر هم ارتباط نزدیک داره به همین دلیل بطور دقیق نمیشه تعداد کارکتراهای موجود در یک سطر رو بدست آوورد اما با فرض اینکه فونت شما ثابته و تغییر نمیکنه ابتدا تعداد کارکترهای یک سطر رو بدست بیارید بعد با تقسیم طول متن استخراجی از دیتابیس بر تعداد کارکترهای یک سطر تعداد سطرها بدست میاد . سپس میتونید با ضرب یک عدد ثابت به ازای ارتفاع هر سطر ارتفاع کنترل رو تنظیم کنید:

String ExportedStringFromDb = "متن استخراج شده از دیتابیس";
int RowChars = 120;
int RowHeight = 20;
int ContentLenth = ExportedStringFromDb.Length;
int RowsCount = ContentLenth / RowChars;
richTextBox1.Height = RowsCount * RowHeight;

yekta64
یک شنبه 12 اردیبهشت 1389, 08:13 صبح
شما باید با توجه به طول richtextbox تعداد کارکترهایی که در یک سطر قرار میگیرند رو محاسبه کنید که این با تغییر فونت هر سطر هم ارتباط نزدیک داره به همین دلیل بطور دقیق نمیشه تعداد کارکتراهای موجود در یک سطر رو بدست آوورد اما با فرض اینکه فونت شما ثابته و تغییر نمیکنه ابتدا تعداد کارکترهای یک سطر رو بدست بیارید بعد با تقسیم طول متن استخراجی از دیتابیس بر تعداد کارکترهای یک سطر تعداد سطرها بدست میاد . سپس میتونید با ضرب یک عدد ثابت به ازای ارتفاع هر سطر ارتفاع کنترل رو تنظیم کنید:

String ExportedStringFromDb = "متن استخراج شده از دیتابیس";
int RowChars = 120;
int RowHeight = 20;
int ContentLenth = ExportedStringFromDb.Length;
int RowsCount = ContentLenth / RowChars;
richTextBox1.Height = RowsCount * RowHeight;



مرسی

راستش من راه حل شما رو امتحان کردم ولی در این حالت کنترل ناپدید شد
دوست عزیز در حالت کلی اگه بخوایم اندازه یه کنترل مثل richtextbox رو با توجه به داده ای که در اون قرار می گیره تغییر بدیم شما چه راه حلی پیشنهاد می دید؟؟؟؟؟؟؟

به عبارت دیگه شما برای داینامیک بودن highet یه کنترل با توجه به محتوای اون چه راه حلی پیشنهاد می کنید؟؟؟؟

ممنون میشم راهنمایی کنید

yekta64
یک شنبه 12 اردیبهشت 1389, 12:52 عصر
دوستان کسی نظری نداره؟؟؟
یه راه حل برای کنترل hieght یک کنترل در زمان اجرا با توجه به محتواش ؟؟؟؟
مرسی

alireza_s_84
یک شنبه 12 اردیبهشت 1389, 12:56 عصر
شما این کد رو trace کردین؟؟؟؟
من خودم از این کد برای تغییر ارتفاع استفاده میکنم و تمامی MessageBox های سفارشی رو اینطوری تعیین ارتفاع میکنم. شما چطور میگید که کنترل ناپدید شده؟!!!

yekta64
یک شنبه 12 اردیبهشت 1389, 13:00 عصر
شما این کد رو trace کردین؟؟؟؟
من خودم از این کد برای تغییر ارتفاع استفاده میکنم و تمامی MessageBox های سفارشی رو اینطوری تعیین ارتفاع میکنم. شما چطور میگید که کنترل ناپدید شده؟!!!

باور کنید تست کردم ناپدید شد میشه لطف کنید کدتون رو روی یه richtextbox تست کنید ببیند درست عمل می کنه یا نه؟؟؟؟

بی نهایت ممنون

alireza_s_84
یک شنبه 12 اردیبهشت 1389, 13:03 عصر
باور کنید تست کردم ناپدید شد میشه لطف کنید کدتون رو روی یه richtextbox تست کنید ببیند درست عمل می کنه یا نه؟؟؟؟
بی نهایت ممنون
بله قبل از اینکه برای شما بفرستم تست کردم مطمئنا کار میده شما خودت یکبار Trace کن ببین شاید متنی رو از دیتابیس استخراج نمیکنه واسه همین ارتفاع کنترل میشه 0 یه چک بکنید.

yekta64
یک شنبه 12 اردیبهشت 1389, 13:32 عصر
بله قبل از اینکه برای شما بفرستم تست کردم مطمئنا کار میده شما خودت یکبار Trace کن ببین شاید متنی رو از دیتابیس استخراج نمیکنه واسه همین ارتفاع کنترل میشه 0 یه چک بکنید.
دوست عزیز من برای تست کردن یه داده به صورت تست در کنترل قرار دادم و فعلا چیزی رو از دیتابیس نگرفتم به این صورت ایا ایرادی در این کار وجود داره که hieght رو صفر برمی گردونه؟؟؟


Dim ExportedStringFromDb AsString = "hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"
Dim RowChars AsInteger = 120
Dim RowHeight AsInteger = 20
Dim ContentLenth AsInteger = ExportedStringFromDb.Length
Dim RowsCount AsInteger = ContentLenth / RowChars
RichTextBox1.Height = RowsCount * RowHeight


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

مرسی دوست عزیز

alireza_s_84
یک شنبه 12 اردیبهشت 1389, 15:05 عصر
من دوباره پاسخم رو تکرار میکنم:
شما باید با توجه به طول richtextbox تعداد کارکترهایی که در یک سطر قرار میگیرند رو محاسبه کنید که این با تغییر فونت هر سطر هم ارتباط نزدیک داره به همین دلیل بطور دقیق نمیشه تعداد کارکتراهای موجود در یک سطر رو بدست آوورد اما با فرض اینکه فونت شما ثابته و تغییر نمیکنه ابتدا تعداد کارکترهای یک سطر رو بدست بیارید بعد با تقسیم طول متن استخراجی از دیتابیس بر تعداد کارکترهای یک سطر تعداد سطرها بدست میاد . سپس میتونید با ضرب یک عدد ثابت به ازای ارتفاع هر سطر ارتفاع کنترل رو تنظیم کنید.
خوب شما دقیقا اینرو مطالعه کن ببین کجاش ایراد ایراد داره و من خوب توضیح ندادم تا بهتون بگم چرا کنترل ناپدید میشه. دیگه ساده تر چه جوری میشه توضیح داد؟؟؟!!!

yekta64
یک شنبه 12 اردیبهشت 1389, 15:29 عصر
من دوباره پاسخم رو تکرار میکنم:
شما باید با توجه به طول richtextbox تعداد کارکترهایی که در یک سطر قرار میگیرند رو محاسبه کنید که این با تغییر فونت هر سطر هم ارتباط نزدیک داره به همین دلیل بطور دقیق نمیشه تعداد کارکتراهای موجود در یک سطر رو بدست آوورد اما با فرض اینکه فونت شما ثابته و تغییر نمیکنه ابتدا تعداد کارکترهای یک سطر رو بدست بیارید بعد با تقسیم طول متن استخراجی از دیتابیس بر تعداد کارکترهای یک سطر تعداد سطرها بدست میاد . سپس میتونید با ضرب یک عدد ثابت به ازای ارتفاع هر سطر ارتفاع کنترل رو تنظیم کنید.
خوب شما دقیقا اینرو مطالعه کن ببین کجاش ایراد ایراد داره و من خوب توضیح ندادم تا بهتون بگم چرا کنترل ناپدید میشه. دیگه ساده تر چه جوری میشه توضیح داد؟؟؟!!!

خوب دوست عزیز تعداد کاراکتر های هر سطر رو به چه صورت بدست بیاریم و اینکه شما در اینجا د. مقدار 120و20 رو به صورت پیش فرض قرار دادید؟؟؟
مرسی