텍스트 상자에서 커서의 위치를 어떻게 찾습니까? 씨#
표준 WinForms TextBox가 있고 텍스트의 커서 위치에 텍스트를 삽입하고 싶습니다. 커서의 위치를 어떻게 알 수 있습니까?
감사
텍스트가 선택되었는지 여부에 관계없이 SelectionStart 속성은 캐럿이있는 텍스트의 인덱스를 나타냅니다. 따라서 다음 과 같이 String.Insert 를 사용 하여 텍스트를 삽입 할 수 있습니다 .
myTextBox.Text = myTextBox.Text.Insert(myTextBox.SelectionStart, "Hello world");
의 SelectionStart
속성 을 확인하고 싶습니다 TextBox
.
James, 커서 위치에 일부 텍스트 만 삽입하려는 경우 전체 문자열을 교체해야하는 것은 매우 비효율적입니다.
더 나은 솔루션은 다음과 같습니다.
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());
모두 감사합니다.
감사
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
To get the caret position when you click the mouse within the text of a TextBox
, use the TextBox
MouseDown
event. Create a point using X and Y properties of the MouseEventArgs
. The TextBox
has a method called GetCharIndexFromPosition(point)
. Pass it the point and it returns the caret position. This works if you are using the mouse to determine where you want to insert the new text.
You have to keep the SelectionStart
property in a variable, and then when you press the button, shift the focus back to the TextBox. Then set the SelectionStart
property to the one in the variable.
ReferenceURL : https://stackoverflow.com/questions/526540/how-do-i-find-the-position-of-a-cursor-in-a-text-box-c-sharp
'IT TIP' 카테고리의 다른 글
리플 드로어 블에서 state_selected를 설정하는 방법 (0) | 2021.01.06 |
---|---|
EF6 Code First의 enum에 해당하는 테이블을 만드는 방법은 무엇입니까? (0) | 2021.01.06 |
Java에서 지정된 날짜 동안 일광 절약 시간 (DST)이 활성 상태인지 확인 (0) | 2021.01.06 |
일괄 적으로 "종료하려면 Enter를 누르십시오"를 수행하는 방법 (0) | 2021.01.06 |
C # 4.0에서 클래스에 대한 일반 분산이없는 이유는 무엇입니까? (0) | 2021.01.06 |