永发信息网

怎么让Winfrom窗体加载时dataGridView失去行焦点

答案:3  悬赏:80  手机版
解决时间 2021-01-04 06:19
  • 提问者网友:我没有何以琛的痴心不悔
  • 2021-01-03 16:04
情况如下:
第一个窗体中有个跳转页面按钮,单击按钮后打开第二个窗体
第二个窗体中有一个dataGridView控件,并且在打开第二个窗体时就加载数据
还有一个textBox控件,当dataGridView行状态发生更改时则会将当前选定行的第一列的值传给textBox
dataGridView行状态更改的事件即:
dataGridView1_RowStateChanged
{
textBox1.Text = e.Row.Cells[1].Value.ToString();
}
问题就在于当加载第二个窗体时dataGridView1_RowStateChanged事件默认就会将dataGridView第一行选中,从而导致刚刚加载的时候就为textBox传值
我想要的效果是当第二个窗体加载时textBox控件为空,只有在我选定行的时候才去为textBox传值
帮帮我吧,查了不少资料都没有能解决这个问题的,高手指点下啊

要能解决问题的,别蒙人啊!一楼的,你那isLoad 变量有什么用啊,我就纳闷了
二楼说的方法我以前就试过了,也不行
最佳答案
  • 五星知识达人网友:污到你湿
  • 2021-01-03 17:36
我不知道你那个RowStateChanged事件是否同样适用于我这种情况,如果我是你我会选择用AfterSelect事件

我的做法是在打开第二个窗体加载数据之后写一句
dgvCustomerInfo.ClearSelection();

例如:

//从临时集合取数据
dgvCustomerInfo.DataSource = CompanyInfos;
//[ 默认不让选择一条数据]
dgvCustomerInfo.ClearSelection();

在AfterSelect事件中写
if(dgvCustomerInfo.SelectedIndex >= 0)
{
textBox1.Text = dgvPersonalInfo.SelectedRows[0].Cells[0].Value.ToString();
}
全部回答
  • 1楼网友:西岸风
  • 2021-01-03 19:32
其实至只需要做的是,第二个窗体加载的时候,textBox文本框获得焦点就可以了
  • 2楼网友:洎扰庸人
  • 2021-01-03 18:29
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(); } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯