编程语言
首页 > 编程语言> > c# – 在我的自定义文本框中读取表单中的所有textBox

c# – 在我的自定义文本框中读取表单中的所有textBox

作者:互联网

我在winform项目中使用自定义TextBox,我在自定义TextBox中添加了这个属性:

private TextBox _nextControl;

public TextBox NextControl 
{
    set { _nextControl=value; }
    get { return _nextControl; }
}

我在自定义TextBox属性中使用属性NextControl获得了一个带有2个TextBox(textBox1和textBox2)的表单的结果;我可以在表单中看到所有TextBox:

在这种情况下,属性NextControl将在我的表单中显示所有TextBox以选择我的下一个控件.

但是当我想在我的新WPF costum TextBox中做同样的事情时,我得到了相同的条件(2个TextBoxes,textBox1和textBox2):

为什么我没有相同的结果?以及如何在我的WPF项目中执行此操作?

更新:

有关更多说明,在我的winform项目中,我使用属性NextControl从UI属性中选择下一个控件.

protected override void OnKeyDown(KeyEventArgs e) 
{
    if(e.KeyCode==Keys.Down) 
        // select the next TextBox chosen in this TextBox option
        _nextControl.Select(); 
}

因为我已经可以在UI中选择下一个TextBox的名称,所以我不想使用额外的代码来执行此操作.

但这在WPF中不起作用:我在窗口中看不到我的TextBoxes的名称NextControl属性(如果我选择属性类型= TextBox,则自动在winform中).

p.s.:我的自定义TextBox继承自System.Windows.Controls.TextBox.

更新:

我用一个示例项目的自定义TextBox [here]上传了一个winform项目,我希望WPF的行为可以相同.

我已经更新了这个示例的链接.

解决方法:

快速查看代码告诉我你的Windows窗体用户控件与WPF不兼容,特别是Windows窗体中的keyDown事件解析参数“KeyEventArgs e”,这是一个System.Windows.Form.Key但是WPF解析“System”. Windows.Input.Key“和WPF没有”文本框的Select()方法.此外,WPF以非常不同的方式绑定控件到WinForm,因此您的WinFromuserControl将无法在WPF窗体中工作.

如果要在WPF表单中使用类似的行为,则必须编写一个WPF支持的行为.

标签:c,wpf-controls
来源: https://codeday.me/bug/20190629/1327508.html