zoukankan      html  css  js  c++  java
  • UltraGrid的Row,通过BindingSource,给ComboBox修改,修改后,内容无法即时反馈给UltraGrid的bug

    使用UltraGrid,选中当前Row,把Row的BindingSource给ComboBox修改。当ComboBox的Text第一次修改后,UltraGrid的Row里未能立即反应出该更改。

    通过观察,如果此时更改其他控件的值,或者此ComboBox多选择几次,就可以实现更改。我这里是通过前者进行的修改。

    假设还有一个TextBox,也绑定到该BindingSource上,则:

    private void ComboBox_ValueChanged(object sender, EventArgs e)//这个方法是ComboBox的ValueChanged的处理事件
    {
         this.ComboBox.ValueChanged -= this.ComboBox_ValueChanged;
         string saveValue = this.ComboBox.Text;
    
         this.BugFix_ForceNotificeDataSource_DataChange();//关键
    
         this.ComboBox.Text = saveValue;
    
         this.BindingSource.EndEdit();
    
         this.ComboBox.ValueChanged += this.ComboBox_ValueChanged;
    }
    
    
    private void BugFix_ForceNotificeDataSource_DataChange()
    {
        string valueSaved = this.TextBox.Text;
        this.ComboBox.Text = "Temp";
        this.ComboBox.Text = valueSaved;
    }
    

    如果你的界面上没有这个额外的TextBox,那么,可以把“BugFix_ForceNotificeDataSource_DataChange”的内容,修改为:

    1.获取当前ComboBox的Text的内容,在ComboBox的下拉菜单的位置,假设为indexPosA。

    2.让ComboBox选择(SelectIndex)一个不是indexPosA并且属于ComboBox下拉菜单的Count范围内的值。

    3.把ComboBox的SelectIndex还原为indexPosA。

    显然,这种方法有一个缺陷,那就是,如果ComboBox的下拉菜单没有内容,或者只有1个内容,则这个方法无效。

  • 相关阅读:
    Linux .下Apache的安装
    从程序员到项目经理:项目管理三大目标
    linux下mysql安装
    Linux学习之常用命令
    转载:struts2拦截器
    el自定义函数库
    JAVA正则表达式小结
    JSP自定义标记
    JAVA动态代理(JDK和CGLIB)
    JAVA反射机制
  • 原文地址:https://www.cnblogs.com/xxxteam/p/2915026.html
Copyright © 2011-2022 走看看