PDA

View Full Version : مبتدی: تعریف خط جدید در richtextbox



hashtgerd2
پنج شنبه 23 اردیبهشت 1395, 16:01 عصر
می خوام با زدن دکمه enter دقیقا همون کاری که دکمه اینتر انجام میدده انجام بده بره خط بعد
TextBox1.Text += "\n";
ولی می خوام از هر جای متن که کلیک میکنم دکمه اینتر رو میزنم بره خط بعد با این دستور بالا همیشه از اخر خط میره خط بعدی
140377

hashtgerd2
پنج شنبه 23 اردیبهشت 1395, 23:20 عصر
ایندکس اون جایی که کلیک میکنی رو هم بدست آوردم
یه راه حلش اینه که از اول تا اون جایی که کلیک کردیم رو بریزم تو یه رشته بعد برم خط بعد بعدش از اونجا به بعد رو به رشته اضافه کنم
که کار سختیه بلد نیستم کاراکتر های ریچ تکس باکسو بخونم
بعدش میخوام نوشته هامو رنگی کنم که اگه این کارو بکنم مشکل پیش میادش

Mahmoud.Afrad
جمعه 24 اردیبهشت 1395, 00:46 صبح
اگر منظورت اینه که باتن ای که تکست Enter داره عمل اینتر کیبورد رو انجام بده به صورت زیر میتونی
void InsertEnter(RichTextBox richtxt)
{
string removedSelection = RemoveSelectionText(richtxt);
int selectionStartIndex = richtxt.SelectionStart;
richtxt.Text = removedSelection.Insert(selectionStartIndex, Environment.NewLine);
richtxt.SelectionStart = selectionStartIndex + 1;
richtxt.Focus();
}

string RemoveSelectionText(RichTextBox richtxt)
{
return richtxt.SelectionLength > 0
? richtxt.Text.Remove(richtxt.SelectionStart, richtxt.SelectionLength)
: richtxt.Text;
}
به اینصورت فراخوانی کنید:
InsertEnter(richTextBox1);

متد RemoveSelectionText برای وقتی هست که چند کاراکتر سلکت شده باشه که در اینصورت با وارد کردن متن ، باید قسمت سلکت شده حذف بشه. تقریبا در همه باتن هایی که کاراکتری اضافه میکنند باید متد RemoveSelectionText اول فراخوانی بشه و بعد کاراکتر مورد نظر اضافه بشه.

hashtgerd2
جمعه 24 اردیبهشت 1395, 10:39 صبح
فراوخوانی میکنم قبول نمی کنم اسم ریچ تکس باکسم اینه TextBox1
من می خوام فقط اینتر بخوره مثل کاری که دکمه اینتر رو رو کیبور می زنی همون کارو هم وقتی باتن اینتر روی فرم می زنی رو انجام بده
تابع اولی رو فرواخوانی میکنی باید اسم ریچ تکس باکس رو بفرستیم؟
140386

hashtgerd2
جمعه 24 اردیبهشت 1395, 11:25 صبح
دستو درد نکنه کد رو داخل خود باتن نوشتم انجام شدش
string removedSelection = TextBox1.Text;
int selectionStartIndex = TextBox1.SelectionStart;
TextBox1.Text = removedSelection.Insert(selectionStartIndex, Environment.NewLine);
TextBox1.SelectionStart = selectionStartIndex + 1;
TextBox1.Focus();

ولی با تابع که میفرستادم قبول نمیکرد
مهم نیست کاری که می خواستم رو انجام میده.

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

Mahmoud.Afrad
جمعه 24 اردیبهشت 1395, 17:40 عصر
به جای textbox باید از کنترل richtextbox و پراپرتی هایی مثل SelectionColor استفاده کنی. پ.ن: حتما از تگ مناسب برای فرمتدهی به کدها استفاده کنید.