DataGridView不会立即更改DataSource的值

时间:2018-01-08 07:37:30

标签: c# datagridview

我有一个带有DataTable的类。 DataTable有2列,'复选框'和'价值'

在其他Form类中,我找到了Class的实例。 以及DataGridView DataSource是Class的DataTable

问题是当我尝试通过发生DataGridView的事件来使用类内的方法获取DataTable的Value时,它没有更新。当事件发生时,DataTable值保持在事件的先前状态。

这是我的代码......

public class DataClass
{
    public DataTable Dt { get; set; }

    public DataClass()
    {
        Dt = new DataTable();
        Dt.Columns.Add("CheckBox", typeof(bool));
        Dt.Columns.Add("Value", typeof(int));
        Dt.Rows.Add(false, 123);
        Dt.Rows.Add(false, 456);
    }

    public void AnalizeDataTableValue()
    {
        var numberValues = new List<int>();
        foreach (DataRow row in Dt.Rows)
        {
            // Checked?
            bool doThat = bool.Parse(row["CheckBox"].ToString());
            if (doThat == false)
                continue;

            numberValues.Add(int.Parse(row["Value"].ToString()));
        }
    }
}

public class MyForm : Form
{
    private DataClass _DtClass;

    public MyForm()
    {
        _DtClass = new DataClass();

        Datagridview1.Columns.Add(new DataGridViewCheckBoxColumn() {DataPropertyName = "CheckBox" });
        Datagridview1.Columns.Add(new DataGridViewTextBoxColumn() { DataPropertyName = "Value" });
        Datagridview1.DataSource = _DtClass.Dt;
    }

    private void Datagridview1_Leave(object sender, EventArgs e)
    {
        DataGridView dgv = (DataGridView)sender;
        _DtClass.AnalizeDataTableValue();
    }
}

在此代码中,如果我更改DataGridView的值并离开控件,则会发生事件并且方法&#39; AnalizeDataTableValue()&#39;跑。 我必须获得Changed DataTable值,但事实并非如此。 如果我再次更改dataGridView的值。我之前可以改变状态..

我认为DataGridView在发生事件后不会更改DataSource。

0 个答案:

没有答案