6

選択したテキストをテキスト ボックスから削除し、代わりに新しい文字を入力しようとしています。たとえば、テキストボックスがで構成されている場合、123456選択してキーボード345を押すと、選択したテキストが置き換えられます。r

ここに私のコードがあります:

string _selectText = txtCal.SelectedText;
string _text = Convert.ToString(btn.Text);

if (_selectText.Length > 0) {
   int SelectionLenght = txtCal.SelectionLength;
   string SelectText = txtCal.Text.Substring(txtCal.SelectionStart, SelectionLenght);
   txtCal.Text = ReplaceMethod(SelectText, _text);
}

//replace method function
public string ReplaceMethod(string replaceString, string replaceText) {
   string newText = txtCal.Text.Replace(replaceString, replaceText);
   return newText;
}

誰かが私の間違いを教えてもらえますか?

4

4 に答える 4

10

コメントに記載されているように、上記の置換ベースの回答は、選択の間違ったインスタンスを置換する可能性があります。以下は、代わりにポジションをオフにして機能し、その問題は発生しません。

textbox1.Text = textbox1.Text.Substring(0, textbox1.SelectionStart) + textbox1.Text.Substring(textbox1.SelectionStart + textbox1.SelectionLength, textbox1.Text.Length - (textbox1.SelectionStart + textbox1.SelectedText.Length));
于 2013-01-17T05:02:58.833 に答える
1

代わりにこれを試してください

if (textbox1.SelectedText.Length > 0)
{
   textbox1.Text = textbox1.Text.Replace(text1.Text.Substring(textbox1.SelectionStart, textbox1.SelectionLength), btn.Text);                
}
于 2012-09-11T18:22:25.573 に答える