Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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++/CLR DataSourceUpdateMode::OnPropertyChanged with TextBox将光标向左移动_C++_Winforms_Binding_Clr - Fatal编程技术网

C++ C++/CLR DataSourceUpdateMode::OnPropertyChanged with TextBox将光标向左移动

C++ C++/CLR DataSourceUpdateMode::OnPropertyChanged with TextBox将光标向左移动,c++,winforms,binding,clr,C++,Winforms,Binding,Clr,我正在将一个数据源绑定到Windows窗体文本框,该数据源必须在每次按键时进行验证,以提供及时的用户反馈(以启用/禁用相关控件的形式)。因此,我正在绑定DataSourceUpdateMode::OnPropertyChanged。不幸的是,这会导致文本框在每次击键时将光标重置到字段左侧,从而导致用户输入被反转。使用DataSourceUpdateMode::OnValidation可以消除光标问题,但是在焦点离开文本框之前,数据源当然不会更新,在这种情况下,这是不可接受的(我有一个灰色的“应用

我正在将一个数据源绑定到Windows窗体文本框,该数据源必须在每次按键时进行验证,以提供及时的用户反馈(以启用/禁用相关控件的形式)。因此,我正在绑定DataSourceUpdateMode::OnPropertyChanged。不幸的是,这会导致文本框在每次击键时将光标重置到字段左侧,从而导致用户输入被反转。使用DataSourceUpdateMode::OnValidation可以消除光标问题,但是在焦点离开文本框之前,数据源当然不会更新,在这种情况下,这是不可接受的(我有一个灰色的“应用”按钮,直到值改变为止)

描述了问题,但仅针对RichTextBox,并声称普通TextBox不存在此问题。我的普通文本框有问题

有没有人见过这个问题,并找到了解决方法,仍然使用绑定对象


编辑:测试表明,表单上按钮的单击事件在验证之前触发,这意味着如果用户单击文本字段以更改值,然后直接单击“应用”,则输入的值不会及时传播到数据源以响应单击。换句话说,对于我的应用程序来说,文本框OnValidate的实用性大大降低。

事实证明,为绑定打开字符串格式可以修复插入符号位置问题

什么是:

textbox->DataBindings->Add("Text", model_object, "MyProperty", false, 
    DataSourceUpdateMode::OnPropertyChanged);
变成:

textbox->DataBindings->Add("Text", model_object, "MyProperty", true, 
    DataSourceUpdateMode::OnPropertyChanged);
就像魔法一样,插入符号停止了自身的重新定位。如果有人可以评论并解释为什么这是有意义的,请这样做


提供了尝试打开字符串格式的提示。

您所谓的“不可接受”是完全正常的。您不希望在用户仍在文本框中摸索时更新数据源。Hans,我特别希望在用户仍在文本框中摸索时更新数据源。这就是重点。