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