標準のWinForms TextBoxがあり、テキスト内のカーソルの位置にテキストを挿入したい。カーソルの位置を取得するにはどうすればよいですか?
ありがとう
テキストが選択されているかどうかに関係なく、 SelectionStart プロパティはキャレットが置かれているテキストのインデックスを表します。したがって、 String.Insert を使用して、次のようにテキストを挿入できます。
myTextBox.Text = myTextBox.Text.Insert(myTextBox.SelectionStart, "Hello world");
SelectionStart
のTextBox
プロパティを確認します。
ジェームズ、カーソル位置にテキストを挿入したいだけの場合、文字列全体を置き換える必要があるのはかなり非効率的です。
より良い解決策は次のとおりです。
textBoxSt1.SelectedText = ComboBoxWildCard.SelectedItem.ToString();
何も選択されていない場合、カーソル位置に新しいテキストが挿入されます。何かを選択している場合、これは選択したテキストを挿入したいテキストに置き換えます。
eggheadcafeサイト からこのソリューションを見つけました。
あなたがしなければならないのはこれです:
ドキュメントのカーソル位置にテキストを挿入するアイテム(ボタン、ラベルなど)をダブルクリックします。次に、これを入力します。
richTextBox.SelectedText = "whatevertextyouwantinserted";
これは、最後の有効な入力テキスト位置を復元して、数字のみを入力することを可能にする私の実際の実現です:
Xaml:
<TextBox
Name="myTextBox"
TextChanged="OnMyTextBoxTyping" />
コードビハインド:
private void OnMyTextBoxTyping(object sender, EventArgs e)
{
if (!System.Text.RegularExpressions.Regex.IsMatch(myTextBox.Text, @"^[0-9]+$"))
{
var currentPosition = myTextBox.SelectionStart;
myTextBox.Text = new string(myTextBox.Text.Where(c => (char.IsDigit(c))).ToArray());
myTextBox.SelectionStart = currentPosition > 0 ? currentPosition - 1 : currentPosition;
}
}
どのイベントで変数を記録することをお勧めしますか?去る?
現在私は持っています:
private void comboBoxWildCard_SelectedIndexChanged(object sender, EventArgs e)
{
textBoxSt1.Focus();
textBoxSt1.Text.Insert(intCursorPos, comboBoxWildCard.SelectedItem.ToString());
}
private void textBoxSt1_Leave(object sender, EventArgs e)
{
intCursorPos = textBoxSt1.SelectionStart;
}
Leaveイベントでの録音は機能していますが、テキストが挿入されません。何かが足りませんか?
更新:textBoxSt1.Text =が必要でした
textBoxSt1.Text = textBoxSt1.Text.Insert(intCursorPos, comboBoxWildCard.SelectedItem.ToString());
皆さんありがとう。
ありがとう
SelectionStart
プロパティを変数に保持し、ボタンを押したときにフォーカスをTextBoxに戻します。次に、SelectionStart
プロパティを変数のプロパティに設定します。
TextBox
のテキスト内でマウスをクリックしたときにキャレットの位置を取得するには、TextBox
MouseDown
イベントを使用します。 MouseEventArgs
のXおよびYプロパティを使用してポイントを作成します。 TextBox
にはGetCharIndexFromPosition(point)
というメソッドがあります。ポイントを渡すと、キャレットの位置を返します。これは、マウスを使用して新しいテキストを挿入する場所を決定する場合に機能します。
int cursorPosition = textBox1.SelectionStart;
//it will extract your current cursor position where ever it is
//textBox1 is name of your text box. you can use one
//which is being used by you in your form