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