繁体   English   中英

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

[英]How to get the current cursor position in NumericUpDown?

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

在这里我找不到oldPosition

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

您可以使用 NumericUpDown 控件的.Controls属性来获取其包含的控件,并从该集合中获取所包含的 TextBox。

不要太注意我把this.oldPosition = this.upDownTextBox.SelectionStart; 在 KeyUp 事件中,它只是一个方便我访问 TextBox 的 SelectionStart 属性的地方,您可以使用它来获取/设置光标位置

    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;

    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM