怎么让Winfrom窗体加载时dataGridView失去行焦点
情况如下:第一个窗体中有个跳转页面按钮,单击按钮后打开第二个窗体第二个窗体中有一个dataGridView控件,并且在打开第二个窗体时就加载数据还有一个textBox控件...
情况如下:
第一个窗体中有个跳转页面按钮,单击按钮后打开第二个窗体
第二个窗体中有一个dataGridView控件,并且在打开第二个窗体时就加载数据
还有一个textBox控件,当dataGridView行状态发生更改时则会将当前选定行的第一列的值传给textBox
dataGridView行状态更改的事件即:
dataGridView1_RowStateChanged
{
textBox1.Text = e.Row.Cells[1].Value.ToString();
}
问题就在于当加载第二个窗体时dataGridView1_RowStateChanged事件默认就会将dataGridView第一行选中,从而导致刚刚加载的时候就为textBox传值
我想要的效果是当第二个窗体加载时textBox控件为空,只有在我选定行的时候才去为textBox传值
帮帮我吧,查了不少资料都没有能解决这个问题的,高手指点下啊
要能解决问题的,别蒙人啊!一楼的,你那isLoad 变量有什么用啊,我就纳闷了
二楼说的方法我以前就试过了,也不行 展开
第一个窗体中有个跳转页面按钮,单击按钮后打开第二个窗体
第二个窗体中有一个dataGridView控件,并且在打开第二个窗体时就加载数据
还有一个textBox控件,当dataGridView行状态发生更改时则会将当前选定行的第一列的值传给textBox
dataGridView行状态更改的事件即:
dataGridView1_RowStateChanged
{
textBox1.Text = e.Row.Cells[1].Value.ToString();
}
问题就在于当加载第二个窗体时dataGridView1_RowStateChanged事件默认就会将dataGridView第一行选中,从而导致刚刚加载的时候就为textBox传值
我想要的效果是当第二个窗体加载时textBox控件为空,只有在我选定行的时候才去为textBox传值
帮帮我吧,查了不少资料都没有能解决这个问题的,高手指点下啊
要能解决问题的,别蒙人啊!一楼的,你那isLoad 变量有什么用啊,我就纳闷了
二楼说的方法我以前就试过了,也不行 展开
展开全部
我不知道你那个RowStateChanged事件是否同样适用于我这种情况,如果我是你我会选择用AfterSelect事件
我的做法是在打开第二个窗体加载数据之后写一句
dgvCustomerInfo.ClearSelection();
例如:
//从临时集合取数据
dgvCustomerInfo.DataSource = CompanyInfos;
//[ 默认不让选择一条数据]
dgvCustomerInfo.ClearSelection();
在AfterSelect事件中写
if(dgvCustomerInfo.SelectedIndex >= 0)
{
textBox1.Text = dgvPersonalInfo.SelectedRows[0].Cells[0].Value.ToString();
}
我的做法是在打开第二个窗体加载数据之后写一句
dgvCustomerInfo.ClearSelection();
例如:
//从临时集合取数据
dgvCustomerInfo.DataSource = CompanyInfos;
//[ 默认不让选择一条数据]
dgvCustomerInfo.ClearSelection();
在AfterSelect事件中写
if(dgvCustomerInfo.SelectedIndex >= 0)
{
textBox1.Text = dgvPersonalInfo.SelectedRows[0].Cells[0].Value.ToString();
}
展开全部
private bool isLoad = false;
private void Form2_Load(object sender, EventArgs e)
{
this.dataGridView1.Rows.Add("1", "1");
this.dataGridView1.Rows.Add("2", "2");
this.dataGridView1.Rows.Add("3", "3");
isLoad = true;
}
private void dataGridView1_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
{
if (isLoad)
{
textBox1.Text = e.Row.Cells[1].Value.ToString();
}
}
private void Form2_Load(object sender, EventArgs e)
{
this.dataGridView1.Rows.Add("1", "1");
this.dataGridView1.Rows.Add("2", "2");
this.dataGridView1.Rows.Add("3", "3");
isLoad = true;
}
private void dataGridView1_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
{
if (isLoad)
{
textBox1.Text = e.Row.Cells[1].Value.ToString();
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实至只需要做的是,第二个窗体加载的时候,textBox文本框获得焦点就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询