PDA

View Full Version : سوال: بدست آوردن مکان نشانگر ماوس و رخ دادن رویداد با تغییر مکان ماوس



golestan1
چهارشنبه 04 فروردین 1395, 06:50 صبح
بنده یه فایل ریچ تکست دارم می خوام با کلیک بر روی قسمتی بدونم نشانگر ماوس در چندمین کاراکتر هست
سوال دوم اگر نشانگر روی محدود 1 تا کاراکتر 50 برود تکست تکست باکس تغییر کند بشود 50
و اگر در محدوده 50 تا 100 مین کاراکتر برود تکست تکست باکس بشود 100

سوم چطوری میشه کاری کرد که نشان گر ماوس در هر محدوده باشد رنگ پس زمینه آن محدوده کمی تیره شودو اگر نشانگر از فایل ریچ بیرون رود آن تیره گی از بین رود

vb8334
چهارشنبه 04 فروردین 1395, 17:34 عصر
سلام دوست عزیز

سوال اول و دوم رو جواب دادم برای سوال سوم من کاری که کردم تونستم متن رو رنگ کنم تا جایی که کاراکتر انتخاب شده بود.

اما اگه بخوای پس زمینه همون یه تیکه رنگش تغییر کنه فکر کنم 2 تا راه حل داشته باشی :

1-یه custom control بسازی 2-بگردی تو msdn قسمت richtextbox ببین چیزی برای کار که میخوای میتونی پیدا کنی . شاید از قبل مایکروسافت راه حلی داده باشه.





int positionTosearch;
private void richIndicateText_MouseDown(object sender, MouseEventArgs e)
{
if (e.Clicks == 1 && e.Button == MouseButtons.Left)
{
positionTosearch = richIndicateText.GetCharIndexFromPosition(new Point(e.X, e.Y));

if(positionTosearch >=1 && positionTosearch <= 50)
{
//MessageBox.Show(positionTosearch.ToString());
//richIndicateText.Text="50";
changeColorText();
richIndicateText.MouseLeave += RichIndicateText_MouseLeave;

}else if(positionTosearch >= 50 && positionTosearch <= 100)
{
//MessageBox.Show(positionTosearch.ToString());
//richIndicateText.Text = "100";
changeColorText();
richIndicateText.ForeColor = Color.Red;
}
}


}


private void changeColorText()
{
for (int i = 0; i <= positionTosearch; i++)
{
richIndicateText.SelectionStart = i;
richIndicateText.SelectionLength = 1;
richIndicateText.SelectionColor = Color.Red;
}
}


private void RichIndicateText_MouseLeave(object sender, EventArgs e)
{
for (int i = 0; i <= positionTosearch; i++)
{
richIndicateText.SelectionStart = i;
richIndicateText.SelectionLength = 1;
richIndicateText.SelectionColor = Color.Black;
}


}