我有一个带有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。