Позиционирование курсора текстового поля C#
Я чувствую, что мне просто не хватает простого свойства, но можете ли вы установить курсор в конец строки в текстовом поле?
private void txtNumbersOnly_KeyPress(object sender, KeyPressEventArgs e)
{
if (Char.IsDigit(e.KeyChar) || e.KeyChar == 'b' || e.KeyChar == '.' || e.KeyChar == '-')
{
TextBox t = (TextBox)sender;
bool bHandled = false;
_sCurrentTemp += e.KeyChar;
if (_sCurrentTemp.Length > 0 && e.KeyChar == '-')
{
// '-' only allowed as first char
bHandled = true;
}
if (_sCurrentTemp.StartsWith(Convert.ToString('.')))
{
// add '0' in front of decimal point
t.Text = string.Empty;
t.Text = '0' + _sCurrentTemp;
_sCurrentTemp = t.Text;
bHandled = true;
}
e.Handled = bHandled;
}
после тестирования '.'как первый символ, курсор идет перед текстом, который добавляется. Так что вместо "0.123", результаты "1230.- сам не двигая курсором.
Я также прошу прощения, если это дублирующий вопрос.
5 ответов
в WPF, вы должны использовать :
textBox.Select(textBox.Text.Length,0);
где 0 - количество выбранных символов
предполагая, что вы используете WinForms, а не WPF...
void SetToEndOfLine(TextBox tb, int line)
{
int loc = 0;
for (int x = 0; x < tb.Lines.Length && tb <= line; x++)
{
loc += tb.Lines[x].Length;
}
tb.SelectionStart = loc;
}
Это будет полезно.
private void textBox_TextChanged(object sender, EventArgs e)
{
string c = "";
string d = "0123456789.";
foreach (char a in textBox.Text)
{
if (d.Contains(a))
c += a;
}
textBox.Text = c;
textBox.SelectionStart = textBox.Text.Length;
}