我有這樣的代碼:如何在richTextBox中通過鼠標單擊事件選擇一個字符並將其添加到textBox1然後添加到textBox2?
private void richTextBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
if (mouseisup == false)
{
int positionToSearch = richTextBox1.GetCharIndexFromPosition(new Point(e.X, e.Y));
richTextBox1.SelectionStart = positionToSearch;
textBox1.Text = richTextBox1.Text.Substring(positionToSearch, 1);
previousChar = positionToSearch;
}
else
{
currentChar = richTextBox1.GetCharIndexFromPosition(new Point(e.X, e.Y));
if (currentChar > 2 && currentChar > previousChar)
{
richTextBox1.SelectionStart = currentChar;
textBox2.Text = richTextBox1.Text.Substring(currentChar, 1);
}
}
}
}
private void richTextBox1_MouseUp(object sender, MouseEventArgs e)
{
mouseisup = true;
}
mouseisup和previousChar ABD currentChar所有在Form1的頂部聲明。 previousChar和currentChar都是int,並在form1的頂部設置爲-1。
我想要做的是,當任何字符/信用戶點擊它會顯示它在textBox1的。這部分工作。 現在我想這樣做,之後用戶選擇一個字符/信及其在textBox1中的下一個字符/字母的用戶會點擊將在TextBox2中和規則應是下一個字符/字母不能是同一臺我的意思是在同一個positionToSearch索引中,它必須多於兩個字符/遠離第一個字母的字母。
例如我點擊了一封信:W 這W是在positionToSearch 432 下一個字符或字母i可以單擊並選擇現在應該是任何其他指數則432,應該是長/遠432由兩個至少。
例如:
如果RichTextBox的,我有這樣的文字:
丹尼斯就在這裏。
我點擊D 下一個字母/字母我將能夠點擊選擇應該是n,我,s,h,e,r,e。 但我不會能不會選擇它顯示在TextBox2中,如果我在同d或下一個接近信/炭它在這種情況下點擊:一
或者例如我有這樣的文字:
丹尼爾在這裏丹尼爾在那裏。
我可以選擇第一個D和第二個D 但我不能選擇第一個D和第一個下一個。 或者我不能選擇我和則S
必須有選擇的字符/字母之間至少有兩個以上的遠選擇。
我的代碼是不工作的。
這是我做過什麼至今:
private void richTextBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
if (mouseisup == false)
{
int positionToSearch = richTextBox1.GetCharIndexFromPosition(new Point(e.X, e.Y));
richTextBox1.SelectionStart = positionToSearch;
textBox1.Text = richTextBox1.Text.Substring(positionToSearch, 1);
previousChar = positionToSearch;
}
else
{
currentChar = richTextBox1.GetCharIndexFromPosition(new Point(e.X, e.Y));
if (currentChar > previousChar + 2)
{
richTextBox1.SelectionStart = currentChar;
textBox2.Text = richTextBox1.Text.Substring(currentChar, 1);
}
currentChar = -1;
previousChar = -1;
mouseisup = false;
}
}
}
private void richTextBox1_MouseUp(object sender, MouseEventArgs e)
{
mouseisup = true;
}
但隨着布爾mouseisup的邏輯是錯誤的,因爲在MouseUp事件它每次我點擊一個char或信將是真實的。
這是工作代碼,我想這是對所有的規則:
private void richTextBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
if (mouseisup == false)
{
textBox1.Text = "";
int positionToSearch = richTextBox1.GetCharIndexFromPosition(new Point(e.X, e.Y));
richTextBox1.SelectionStart = positionToSearch;
textBox1.Text = richTextBox1.Text.Substring(positionToSearch, 1);
previousChar = positionToSearch;
textBox2.Text = "";
mouseisup = true;//add this statement
}
else
{
currentChar = richTextBox1.GetCharIndexFromPosition(new Point(e.X, e.Y));
if (currentChar > previousChar + 2 || currentChar < previousChar - 2)
{
richTextBox1.SelectionStart = currentChar;
textBox2.Text = richTextBox1.Text.Substring(currentChar, 1);
}
mouseisup = false;
}
}
}
private void richTextBox1_MouseUp(object sender, MouseEventArgs e)
{
if (textBox2.Text == "")
{
mouseisup = true;
}
}
首先你說「這部分工作。」並且比你說「我的代碼根本不工作」。那麼至少有什麼工作呢? –
我的意思是textBox1的部分正在工作,我點擊一個字符/字母,並添加鼠標到文本框1上的字符/字母。現在第二次點擊不起作用,應該與規則不是相同的字符/字母(索引),而不是下一個字符/字母。如果我有「丹尼爾D」我點擊第一個D我現在不能選擇第一個D旁邊的,但我可以選擇第二個D.你不能選擇相同的索引,而不是下一個字符/字母。 –
編輯我的問題到目前爲止我所做的。 –