
本来时间控件是隐藏的,用户点击了一下, 时间选择控件出现了. 结果此时用户手欠 随手点了下 其他单元格.
此时当前列就变成了其他单元格的当前单元格. .结果此时再回过来头操作时间控件,会出现 选择了时间控制当前单元格,就成了1步骤的单元格,于是乎出现bug
怎么处理呢? 经过分析,尝试,先尝试控件父窗体,结果父窗体内也只能提供当前列之类的参数.
一连串的测试.
发现时间窗在隐藏的时候每次点击单元格先触发
private void dgv_CurrentCellChanged(object sender, EventArgs e){} 事件
但当前窗体在选择了其他单元格时,时间窗体还在显示,在点击的时候无法 触发到上边事件,在网页中还有上下层事件传递,这c#winform似乎不行.
因此:只有在点击其他单元格时,隐藏时间选择控件.这样问题就解决了.....
private void dgv_CurrentCellChanged(object sender, EventArgs e) { if (dgv.CurrentCell == null) { return; } DataGridViewColumn column = dgv.CurrentCell.OwningColumn; //如果是要显示下拉列表的列的话 if (column.Name.Equals("日期")) { int columnIndex = dgv.CurrentCell.ColumnIndex; int rowIndex = dgv.CurrentCell.RowIndex; Point p = this.dgv.Location; Rectangle rect = dgv.GetCellDisplayRectangle(columnIndex, rowIndex, false); dgv.Controls.Add(InputDateudp); InputDateudp.Location = new System.Drawing.Point(rect.X,rect.Y); //将下拉列表的当前项 赋值 InputDateudp.Text = dgv.Rows[rowIndex].Cells[columnIndex].Value.ToString(); InputDateudp.Visible = true; }else //因存在选择其他单元格再选择时间时,出现当前单元格存在问题. 在点击其他单元格时必须隐藏时间框和下来选择框 { InputDateudp.Visible = false; } }
开始一直在从显示的时间控件 找当前单元格.找所在单元格.路子走不通.抓抓包换换思路问题就解决了. 感叹编程无常.欲速则不达.
技术交流qq群:143280841
浙公网安备 33010602011771号