winform 常见问题
1.使用RowsRemoved事件时,初始化datagridview 时,自动执行RowsRemoved事件。并且执行了7次?
解决办法:先声明,form的构造函数比form_load的函数还要早执行,而RowsRemoved的执行顺序比form_load早,比form的构造函数晚,所以我们可以设置一个变量来isLoad来判断是是执行到load函数。
代码如下:
1先声明 一个变量。
public partial class FormTest : Form
{
private bool isLoad { get; set; }
} {
private bool isLoad { get; set; }
2.在form构造函数的 第一步,设置bool的值为true。
代码如下:
public FormTest()
{
isLoad = true;
InitializeComponent();
dataGridView1.DataSource = GetPerson();
InitDataGridViewHead();
dataGridView1.AllowUserToAddRows = false;
}
{
isLoad = true;
InitializeComponent();
dataGridView1.DataSource = GetPerson();
InitDataGridViewHead();
dataGridView1.AllowUserToAddRows = false;
}
3.在load函数中添加如下代码。
private void FormTest_Load(object sender, EventArgs e)
{
isLoad = false;
}
{
isLoad = false;
}
4.然后执行rowsremoved函数如下:
private void dataGridView1_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)
{
if (!isLoad)
{
int removeIndex = e.RowIndex;
// string removeColumnOneText = Convert.ToString(dataGridView1[0,e.RowIndex].Value);
MessageBox.Show("你的数据被删除了:" + removeIndex);
}
}
这样就可以避免初始化datagridview时,执行rowsRemoved{
if (!isLoad)
{
int removeIndex = e.RowIndex;
// string removeColumnOneText = Convert.ToString(dataGridView1[0,e.RowIndex].Value);
MessageBox.Show("你的数据被删除了:" + removeIndex);
}
}
2.RowsDeleting删除多行数据出现多个对话框的解决方案。
3.UserRowDeleting不能触发的问题?
答,当用户按delete键时,才能触发UserRowDeleting事件。
3.如何使用编程的方式去触发某一个事件?