private void richTextBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
MessageBox.Show("you got it!");
}
}
但我想要的是:
在做在RichTextBox的線右擊考慮行項目,以便菜單命令纔會生效的特定的行我沒有右鍵點擊。像刪除,粘貼,複製
如果我選擇粘貼,它會將新文本粘貼到richTextBox的底部(結尾)。但是,如果我點擊複製或刪除它會考慮到特定的行,我做了正確的點擊。
若要製作一行或一批行的粘貼,並將它們添加爲richTextBox底部(末尾)的行。
這就是我今天將文本作爲行添加到richTextBox。這些線是鏈接。 richTextBox中的每一行都是一個鏈接。而我想粘貼到richTextBox的鏈接不僅僅是文本。因此,我粘貼到richTextBox的每個鏈接都應該像我這樣做:for循環僅用於構造函數的第一次。
for (int i = 0; i < lines.Count; i++)
{
RichTextBoxExtensions.AppendText(richTextBox1, "Ready: ", Color.Red, 8.25f);
richTextBox1.AppendText(lines[i] + (i < lines.Count - 1 ? Environment.NewLine : String.Empty));
}
richTextBox1.AppendText(Environment.NewLine);
for (int i = 0; i < newList.Count; i++)
{
RichTextBoxExtensions.AppendText(richTextBox1, "Ready: ", Color.Red, 8.25f);
richTextBox1.AppendText(newList[i] + (i < newList.Count - 1 ? Environment.NewLine : String.Empty));
}
線和newList是列表
這只是如何我添加鏈接到RichTextBox的一個例子。 所以當我粘貼鏈接或鏈接時,他們應該以這種方式添加,就像我正在做的那樣。
這是怎樣的RichTextBox貌似現在例如:
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101330&ir=true
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101330&ir=false
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101345&ir=true
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101345&ir=false
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101400&ir=true
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101400&ir=false
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101415&ir=true
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101415&ir=false
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101430&ir=true
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101430&ir=false
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101445&ir=true
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101445&ir=false
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101500&ir=true
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101500&ir=false
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101515&ir=true
所以,如果我現在在做一個鏈接,例如膏:http://microsoft.com 現在RichTextBox的內容將是這樣的:
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101330&ir=true
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101330&ir=false
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101345&ir=true
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101345&ir=false
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101400&ir=true
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101400&ir=false
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101415&ir=true
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101415&ir=false
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101430&ir=true
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101430&ir=false
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101445&ir=true
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101445&ir=false
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101500&ir=true
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101500&ir=false
Ready: http://www.sat24.com/image2.ashx?region=is&time=201702101515&ir=true
Ready: http://www.microsoft.com
如果我粘貼多個鏈接,那麼它會將鏈接添加到底部。
我覺得這是從剪貼板文本追加的最快方法:
string newText = Clipboard.GetText();
richTextBox1.SelectionStart = richTextBox1.TextLength;
richTextBox1.SelectionLength = 0;
richTextBox1.SelectedText = newText;
但我想它被添加到年底的RichTextBox的底部和格式我對這個做準備好了:
在什麼情況下我應該這樣做?如何在代碼中添加上下文菜單並使用粘貼菜單?
更新
現在我想是這樣的:
private void richTextBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
var startIndex = richTextBox1.Text.IndexOf("Ready:") + "Ready:".Length;
var length = richTextBox1.Text.IndexOf("Ready:", startIndex) - startIndex;
int index = richTextBox1.SelectionStart;
int line = richTextBox1.GetLineFromCharIndex(index);
var code = richTextBox1.Text.Substring(startIndex + index, length - line - 1);
label1.Text = code;
}
我嘗試添加了兩行:
int index = richTextBox1.SelectionStart;
int line = richTextBox1.GetLineFromCharIndex(index);
這兩條線我試圖讓鼠標cursour當我點擊一行時的位置。所以它會解析鼠標所在的行文本,就像listView中的項目一樣。
但子串我不正確。
如果我做這樣說:
private void richTextBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
var startIndex = richTextBox1.Text.IndexOf("Ready:") + "Ready:".Length;
var length = richTextBox1.Text.IndexOf("Ready:", startIndex) - startIndex;
var code = richTextBox1.Text.Substring(startIndex, length - 1);
label1.Text = code;
}
}
它會給我LABEL1總是第一線鏈接。 而不是鼠標光標位置點擊的那一行。 如果我在第7行單擊然後我想在第7行 的label1的全部文本,看看我就行65點擊然後在label1的看線的全部文本65
相同的思路ListView中如果我點擊物品。
嘗試GetCharFromPosition提供鼠標的位置,然後GetLineFromCharIndex從該位置。 – LarsTech