PDA

View Full Version : سوال: تعداد سطر متن یک لیبل



ُِMohammadSina
جمعه 22 دی 1402, 16:01 عصر
سلام دوستان
ببخشید چطور میشه تعداد سطر های متن یک لیبل رو تشخیص داد؟
ممنون میشم جواب بدید

mmbguide
شنبه 23 دی 1402, 21:52 عصر
سلام. میتونید از این روش هم استفاده کنید.


var totalNewLine = label1.Text.Split('\n').Length;

ُِMohammadSina
دوشنبه 25 دی 1402, 15:27 عصر
ممنونم
ببخشید یه سوال دیگه دارم اینکه میشه اسکرول بار عمودی رو به لیبل متصل کرد که اگه سطر های متن لیبل بیشتر از مقدار تعیین شده بود اسکرول بار از حالت هاید در بیاد و بشه متن لیبل رو بالا و پایین کرد مثل لیست باکس؟

mmbguide
دوشنبه 25 دی 1402, 22:14 عصر
تا جایی که مطلع هستم فکر کنم خود Label این ویژگی را ندارد مگر آنکه خودتان یک کنترل جدید بسازید. البته TextBox این قابلیت رو داره و میتونید از TextBox استفاده کنید. البته احتمالا پیشنهاد شما را باید جهت ایجاد یک کنترل جدید استفاده کنم. :تشویق:



Update History:
https://github.com/CesSolutions/Ces.WinForm.UI/wiki
Nuget Package:
https://www.nuget.org/packages/Ces.WinForm.UI/
Repository:
https://github.com/CesSolutions/Ces.WinForm.UI

mmbguide
دوشنبه 25 دی 1402, 22:43 عصر
البته یک کار دیگه هم میتونید انجام بدید. یک Panel اضافه کنید و ویژگی AutoScroll را برابر true قرار بدید. حالا یک Label به Panel اضافه کنید ولی ویژگی AutoSize برابر true باشه. حالا هر زمان که اندازه Label از اندازه کنترل والد که همان Panel هست بیشتر بشه، Panel به شما یک Scroll نشان میده و میتونید متن Label را براحتی Scroll کنید.

155261

ُِMohammadSina
سه شنبه 26 دی 1402, 21:30 عصر
ممنون کارم راه افتاد:قلب:
فقط چطور میشه کاری کرد که وقتی هنوز تعداد سطر های متن تکست باکس به نهایت تعداد سطر هایی که تکست باکس میتونه در سایز فعلی نشون بده نرسیده، قابلیت اسکرول بارِ تکست باکس غیر فعال باشه؟؟

ُِMohammadSina
چهارشنبه 27 دی 1402, 23:12 عصر
ممنون کارم راه افتاد:قلب:
فقط چطور میشه کاری کرد که وقتی هنوز تعداد سطر های متن تکست باکس به نهایت تعداد سطر هایی که تکست باکس میتونه در سایز فعلی نشون بده نرسیده، قابلیت اسکرول بارِ تکست باکس غیر فعال باشه؟؟

پرستو پارسایی
پنج شنبه 28 دی 1402, 21:16 عصر
// تنظیم تعداد سطرهای قابل نمایش در TextBox
int visibleLines = textBox.ClientSize.Height / textBox.Font.Height;


// بررسی اگر تعداد سطرهای متن تکست باکس به حداکثر تعداد سطرهای قابل نمایش نرسیده است، قابلیت اسکرول بار را غیرفعال می‌کنیم
if (textBox.Lines.Length < visibleLines)
{
textBox.ScrollBars = ScrollBars.None;
}
else
{
textBox.ScrollBars = ScrollBars.Vertical; // یا هر نوع اسکرول بار دیگری که می‌خواهید
}

mmbguide
پنج شنبه 28 دی 1402, 21:24 عصر
// تنظیم تعداد سطرهای قابل نمایش در TextBox
int visibleLines = textBox.ClientSize.Height / textBox.Font.Height;


// بررسی اگر تعداد سطرهای متن تکست باکس به حداکثر تعداد سطرهای قابل نمایش نرسیده است، قابلیت اسکرول بار را غیرفعال می‌کنیم
if (textBox.Lines.Length < visibleLines)
{
textBox.ScrollBars = ScrollBars.None;
}
else
{
textBox.ScrollBars = ScrollBars.Vertical; // یا هر نوع اسکرول بار دیگری که می‌خواهید
}

فقط باید با توجه به طراحی UI این قطعه کد را در زمان رخدادها مختلف صدا بزنید:

اگر Font تغییر کرد
اگر متن تغییر کرد
اگر ابعاد کنترل تغییر کرد

پرستو پارسایی
پنج شنبه 28 دی 1402, 21:36 عصر
صحیح میفرمائید سپاس



using System;
using System.Windows.Forms;


namespace ScrollBarExample
{
public class Program
{
public static void Main()
{
// ایجاد یک نمونه از کلاس TextBox
TextBox textBox = new TextBox();


// تنظیم متن و تعداد سطرهای متن
textBox.Multiline = true;
textBox.Text = "این یک متن طولانی است که در تکست باکس نمایش داده می‌شود.";
textBox.ScrollBars = ScrollBars.None; // ابتدا قابلیت اسکرول بار غیرفعال است


// تنظیم تعداد سطرهای قابل نمایش در TextBox
int visibleLines = 3;
textBox.Height = textBox.Font.Height * visibleLines;


// بررسی اگر تعداد سطرهای متن بیشتر از تعداد سطرهای قابل نمایش است، قابلیت اسکرول بار را فعال می‌کنیم
if (textBox.Lines.Length > visibleLines)
{
textBox.ScrollBars = ScrollBars.Vertical; // یا هر نوع اسکرول بار دیگری که می‌خواهید
}


// نمایش TextBox در یک فرم ساده
Form form = new Form();
form.Controls.Add(textBox);
Application.Run(form);
}
}
}

ُِMohammadSina
پنج شنبه 28 دی 1402, 23:35 عصر
سلام مجدد
من از تکست باکس استفاده کردم و اون مشکلم حل شد ولی الان یک مشکل دیگه به وجود اومد:
الان وقتی تکستِ تکست باکس رو برابر با تکست قبلیش به اضافه یه تکسته دیگه به اضافه اینتر(سطر جدید) میکنم، سطر جدید ایجاد نمیشه و تکست جدید بدون فاصله از تکست قبلی نوشته میشه، باید چکار کنم؟

mmbguide
جمعه 29 دی 1402, 15:36 عصر
سلام. لطفا کد خودتون را ارسال کنید

پرستو پارسایی
جمعه 29 دی 1402, 18:02 عصر
اگر درست متوجه منظورتان شده باشم ، با اضافه کردن کاراکتر "\n" به تکست قبلی و سپس اضافه کردن تکست جدید، میتونید سطر جدید را ایجاد کنید

string oldText = "تکست قبلی";
string additionalText = "تکست جدید";


string newText = oldText + "\n" + additionalText;

ُِMohammadSina
جمعه 29 دی 1402, 20:44 عصر
مشکل این بود که در تکست باکس نمیشه با دستور n\ سطر جدید ایجاد کرد.
من به جوابم رسیدم ولی برای بقیه دوستانی که این سوال را دارند راه حلش رو قرار میدم.
با این روش نمیشه توی متن تکست باکس سطر جدید ایجاد کرد:
string Text1 = "متن اول";
string Text2 = "متن دوم";

textBox1.Text = Text1 + "\n" + Text2;

در این صورت این متن در تکست باکس به صورت زیر در میاد:

متن اولمتن دوم

بجاش باید از این روش برای ایجاد سطر جدید در متن تکست باکس استفاده کرد:
string Text1 = "متن اول";
string Text2 = "متن دوم";

textBox1.Text = Text1 + Environment.NewLine + Text2;

در این صورت متن در تکست باکس به صورت زیر در میاد:

متن اول
متن دوم

Mahmoud.Afrad
شنبه 30 دی 1402, 13:16 عصر
به جای لیبل میتونید از تکست باکس با تغییر در رنگ و غیرفعال کردن قابلیت ویرایش استفاده کنید.


ضمنا ، در هر تاپیک یک سوال بپرسید.