如何获取NumericUpDown中的当前光标位置?

时间:2018-03-03 19:42:12

标签: c# numericupdown

我需要在NumericUpDown中获取光标的位置,以便在触发焦点后将其放回到相同的位置,并在文本更改时将其放回千位。我该怎么办?

我无法找到oldPosition

    void nudNofLines_KeyUp(object sender, KeyEventArgs e)
    {
        nudNofLines.Focus();
        nudNofLines.Select(oldPosition, 0);
    }

1 个答案:

答案 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;

    }