繁体   English   中英

textbox.Selection在此事件调用中连续启动

[英]textbox.SelectionStart continuously in this event call

所以我在WPF应用程序中有一个textbox (名为时间),我希望用户输入时间。 我还具有根据光标所在位置添加/减去小时/分钟的按钮。 因此,如果光标位于前两个元素上,它将在分钟10:30至10:31上将小时10:30更新为11:30

 private void up_Click(object sender, RoutedEventArgs e)
    {
        if (time.SelectionStart == 0 || time.SelectionStart == 1 || time.SelectionStart == 2)
        {
            date1 = date1.AddHours(1);
        }

        if (time.SelectionStart == 3 || time.SelectionStart == 4 || time.SelectionStart == 5)
        {

            date1 = date1.AddMinutes(1);
        }

        if (time.SelectionStart == 7 || time.SelectionStart == 6 || time.SelectionStart == 8)
        {
            date1 = date1.AddHours(12);
        }

        time.Text = date1.ToString("hh:mm tt");
    }`

问题是,如果我按常规按此按钮,它将默认返回到小时位置,而不是如果光标位于分钟位置则保持更新分钟,我该如何使其不默认返回并接受光标位置?

如果您按向上键,并且光标位于分钟位置,则它将在10:30到10:31之间正确运行一次,但是第二次单击会将小时更新为11:31,而不是10:32。

正如Elhamer建议的那样。 将选择属性存储在变量中,然后在文本集之后还原它们。

        int position = time.SelectionStart;
        int backup = position;

        if (position == 0 || position == 1 || position== 2)
        {
            date1 = date1.AddHours(-1);
        }

        if (position == 3 || position == 4 || position == 5)
        {

            date1 = date1.AddMinutes(-1);
        }

        if (position == 7 || position == 6 || position == 8)
        {
            date1 = date1.AddHours(-12);
        }


        time.Text = date1.ToString("hh:mm tt");

        time.SelectionStart = backup;

暂无
暂无

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

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