我需要在NumericUpDown中获取光标的位置,以便在触发焦点后将其放回到相同的位置,并在文本更改时将其放回千位。我该怎么办?
我无法找到oldPosition
。
void nudNofLines_KeyUp(object sender, KeyEventArgs e)
{
nudNofLines.Focus();
nudNofLines.Select(oldPosition, 0);
}
答案 0 :(得分:0)
您可以使用NumericUpDown控件的 .Controls 属性来获取其包含的控件,并从该集合中获取包含的TextBox。
不要太在意我在KeyUp事件中放置 this.oldPosition = this.upDownTextBox.SelectionStart; 这一行,这对我来说只是一个方便的地方来访问SelectionStart属性您可以使用TextBox来获取/设置光标位置
public Form1()
{
InitializeComponent();
var x = this.nudNofLines.Controls;
upDownTextBox = x.OfType<TextBox>().FirstOrDefault() as TextBox;
}
private TextBox upDownTextBox;
private int oldPosition;
private void nudNofLines_KeyDown(object sender, KeyEventArgs e)
{
this.oldPosition = this.upDownTextBox.SelectionStart;
}
private void nudNofLines_KeyUp(object sender, KeyEventArgs e)
{
nudNofLines.Focus();
nudNofLines.Select(oldPosition, 0);
// Also try:
this.upDownTextBox.SelectionStart = this.oldPosition;
}