私はrichTextBoxコントロールにコンテキストメニューを追加するにはどうすればよいですか?
private void richTextBox1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
MessageBox.Show("you got it!");
}
}
をしました。しかし私は何をしたいことは次のとおりです。メニューコマンドだけのために有効になりますので、
のRichTextBoxにライン上で右クリックをしているときは、項目としてラインを考えます私が右クリックした特定の行。削除、貼り付け、コピーのように
私が貼り付けを選択すると、新しいテキストがrichTextBoxの最後(最後)に貼り付けられます。しかし、私がコピーをクリックするか削除すると、それは私が右クリックした特定の行と見なされます。
1行または1行の行のペーストを作成し、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が
リストされているこれは私がリッチテキストボックスへのリンクを追加している方法を一例に過ぎでした。 リンクやリンクの貼り付けをするときは、どうやってやっているかのように、この方法で追加する必要があります。
これは、リッチテキストボックスは、例えば、今どのように見えるかです:
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 を今すぐリッチテキストボックスの内容は次のようになります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;
しかし、私はそれが最後に追加されるように、リッチテキストボックスの下部たいとフォーマットに私はそれをやっていますレディ:
そして、どうすればいいですか?コード内にコンテキストメニューを追加し、貼り付けメニューを使用するにはどうしたらいいですか?
更新
は、私は今、このような何かを試してみました:
int index = richTextBox1.SelectionStart;
int line = richTextBox1.GetLineFromCharIndex(index);
この二行私は、マウスのcursourを取得しようとしている:
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;
}
私は2つの行を追加しようとしました私が線をクリックしたときの位置。したがって、マウスが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行目をクリックすると は、私が65
同じ考えListViewの場合のように行のテキスト全体を見て、その後LABEL1に65行をクリックした場合はライン7 のLABEL1テキスト全体で見てみたいです私は項目をクリックします。
は、その位置からGetLineFromCharIndex続いマウスの位置を供給GetCharFromPositionを使用してみてください。 – LarsTech