Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 日期时间选择器子字段选择_C#_Visual Studio_Datetimepicker - Fatal编程技术网

C# 日期时间选择器子字段选择

C# 日期时间选择器子字段选择,c#,visual-studio,datetimepicker,C#,Visual Studio,Datetimepicker,所以我的任务是制作一个定制的数据绑定的空日期时间选择器。我让它工作得很好。唯一的问题是,用户不想使用箭头键来导航控件。他们想使用tab键。但是,如果在DateTimePicker中按tab键,它将留给下一个控件。我已经利用下面的代码解决了这个问题。现在的问题是,我不能离开控件,哈哈。我不知道如何检查我当前在哪个子字段上,所以我知道我是在最左边还是最右边的子字段上,只是离开控件,而不是继续循环。有人有什么建议吗?我们将不胜感激。谢谢 protected override bool Proc

所以我的任务是制作一个定制的数据绑定的空日期时间选择器。我让它工作得很好。唯一的问题是,用户不想使用箭头键来导航控件。他们想使用tab键。但是,如果在DateTimePicker中按tab键,它将留给下一个控件。我已经利用下面的代码解决了这个问题。现在的问题是,我不能离开控件,哈哈。我不知道如何检查我当前在哪个子字段上,所以我知道我是在最左边还是最右边的子字段上,只是离开控件,而不是继续循环。有人有什么建议吗?我们将不胜感激。谢谢

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        if (!this.ShowCheckBox || (this.ShowCheckBox && this.Checked))
        {
            if (keyData == Keys.Tab)
            {
                // **THIS IS WHERE I'M STUCK
                // if not on far right subfield do below
                SendKeys.Send("{RIGHT}");
                return true;
            }
            else if (keyData == (Keys.Shift | Keys.Tab))
            {
                // **THIS IS WHERE I'M STUCK
                // if not on far left subfield do below
                SendKeys.Send("{LEFT}");
                return true;
            }
        }

        return base.ProcessCmdKey(ref msg, keyData);
    }

我不是在左右为难。当我创建一个新的DateTimePicker并将其放到表单上时,我有一个控件显示2013年6月11日星期二,其中有三个可编辑/可导航部分:2013年6月11日。我可以在他们中间选择左/右箭头。我想了解更多有关自定义控件的信息会有所帮助。正确,我也可以使用左/右箭头键在它们之间导航。但是用户也希望使用tab键向左/向右移动。这就是我重载这个方法的原因,当你按tab键时,它充当右箭头键,如果你按shift+tab键,它充当左箭头键。我通过使用SendKeys.Send方法将int构建到MS的API来实现这一点。如果您创建一个新控件并继承DateTimePicker,然后准确地添加这个方法,您应该明白我所说的。如果我说不通,请告诉我……没有办法找出哪个字段有焦点,DTP没有办法选择它,因此也没有办法询问。与DataGridView相比,您也不会使用Tab键移动到另一列。IP地址控制在这方面可能更臭名昭著。也许更好的颜色可以让用户明白DTP是自己的控件。教育您的用户或自己旋转是唯一真正的解决方案。@HansPassant好的,谢谢您提供的信息。我已经通知用户使用箭头键,但他们已经习惯了“tab”键,并且正在请求该功能。可惜这不可能。也许作为一个辅助项目,我会研究创建自己的控件而不是继承DTP。继承DTP是一条死胡同。它是一个非托管Windows组件。DateTimePicker只是它的.NET包装类。