• C#:确保绑定到同一数据源的多个控件保持同步


    下面的代码示例演示如何使用 BindingSource 组件,将三个控件(两个文本框控件和一个 DataGridView 控件)绑定到 DataSet 中的同一列。该示例演示如何处理BindingComplete 事件,并确保当一个文本框的文本值更改时,会用正确的值更新其他文本框和 DataGridView 控件。

    该示例使用 BindingSource 来绑定数据源和控件。或者,可以直接将控件绑定到数据源,并从窗体的 BindingContext 检索用于绑定的 BindingManagerBase,然后为BindingManagerBase 处理 BindingComplete 事件。有关如何进行此操作的示例,请参见 BindingManagerBase 的 BindingComplete 事件的相关帮助页。

    // Declare the controls to be used.
    private BindingSource bindingSource1;
    private TextBox textBox1;
    private TextBox textBox2;
    private DataGridView dataGridView1;
    
    private void InitializeControlsAndDataSource()
    {
        // Initialize the controls and set location, size and 
        // other basic properties.
        this.dataGridView1 = new DataGridView();
        this.bindingSource1 = new BindingSource();
        this.textBox1 = new TextBox();
        this.textBox2 = new TextBox();
        this.dataGridView1.ColumnHeadersHeightSizeMode =
            DataGridViewColumnHeadersHeightSizeMode.AutoSize;
        this.dataGridView1.Dock = DockStyle.Top;
        this.dataGridView1.Location = new Point(0, 0);
        this.dataGridView1.Size = new Size(292, 150);
        this.textBox1.Location = new Point(132, 156);
        this.textBox1.Size = new Size(100, 20);
        this.textBox2.Location = new Point(12, 156);
        this.textBox2.Size = new Size(100, 20);
        this.ClientSize = new Size(292, 266);
        this.Controls.Add(this.textBox2);
        this.Controls.Add(this.textBox1);
        this.Controls.Add(this.dataGridView1);
    
        // Declare the DataSet and add a table and column.
        DataSet set1 = new DataSet();
        set1.Tables.Add("Menu");
        set1.Tables[0].Columns.Add("Beverages");
    
        // Add some rows to the table.
        set1.Tables[0].Rows.Add("coffee");
        set1.Tables[0].Rows.Add("tea");
        set1.Tables[0].Rows.Add("hot chocolate");
        set1.Tables[0].Rows.Add("milk");
        set1.Tables[0].Rows.Add("orange juice");
    
        // Set the data source to the DataSet.
        bindingSource1.DataSource = set1;
    
        //Set the DataMember to the Menu table.
        bindingSource1.DataMember = "Menu";
    
        // Add the control data bindings.
        dataGridView1.DataSource = bindingSource1;
        textBox1.DataBindings.Add("Text", bindingSource1, 
            "Beverages", true, DataSourceUpdateMode.OnPropertyChanged);
        textBox2.DataBindings.Add("Text", bindingSource1, 
            "Beverages", true, DataSourceUpdateMode.OnPropertyChanged);
        bindingSource1.BindingComplete += 
            new BindingCompleteEventHandler(bindingSource1_BindingComplete);
    }
    
    private void bindingSource1_BindingComplete(object sender, BindingCompleteEventArgs e)
    {
        // Check if the data source has been updated, and that no error has occured.
        if (e.BindingCompleteContext == 
            BindingCompleteContext.DataSourceUpdate && e.Exception == null)
    
            // If not, end the current edit.
            e.Binding.BindingManagerBase.EndCurrentEdit();
    }
  • 相关阅读:
    第十六节
    第二十一节
    第十五节
    when条件判断、loop循环
    [整理]新年的杂题
    CSS之Position详解
    「软件」Sublime Text 4 激活与汉化
    Mac 安装 java8
    绕过Microsoft Store安装 Microsoft To Do
    线程本地存储记录
  • 原文地址:https://www.cnblogs.com/eastson/p/3811239.html
Copyright © 2020-2023  润新知