C#学习教程:DataGridView覆盖顶部,左侧标题单元格单击(全选)分享


DataGridView覆盖顶部,左侧标题单元格单击(全选)

我想覆盖DataGridView标题/列单元格(顶部,左侧单元格)中鼠标单击的行为。 该单元格会导致选择所有行。 相反,我想阻止它选择所有行。 我看到一个RowHeaderSelect和ColumnHeaderSelect的事件,但没有一个针对该顶部左侧标题单元格的事件。

有任何想法吗? 我只是在失明吗?

这是单击该单元格时发生的事情的分解代码:

private void OnTopLeftHeaderMouseDown() { if (this.MultiSelect) { this.SelectAll(); if (-1 != this.ptCurrentCell.X) { this.SetCurrentCellAddressCore(this.ptCurrentCell.X, this.ptCurrentCell.Y, false, false, false); } } 

为了防止这种行为,您有两种解决方案:

  1. 禁用多选(如果您的业务逻辑允许)
  2. inheritance自己的数据网格并覆盖OnCellMouseDown (类似这样)

     protected override void OnCellMouseDown(DataGridViewCellMouseEventArgs e) { if (e.RowIndex == -1 && e.ColumnIndex == -1) return; base.OnCellMouseDown(e); } 

我知道这已经很晚了,但希望它会对某人有所帮助。 下面的代码在类似的场景中对我有用。

  private void MyDataGridView_MouseUp(object sender, MouseEventArgs e) { DataGridView.HitTestInfo hitInfo = this.MyDataGridView.HitTest(eX, eY); if (hitInfo.Type == DataGridViewHitTestType.TopLeftHeader) { MyDataGridView.ClearSelection(); } } 

您可以使用此hack获得对click事件的一些控制:)

上述就是C#学习教程:DataGridView覆盖顶部,左侧标题单元格单击(全选)分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

 private void dataGridView1_Click(object sender, EventArgs e) { MouseEventArgs args = (MouseEventArgs)e; DataGridView dgv = (DataGridView)sender; DataGridView.HitTestInfo hit = dgv.HitTest(args.X, args.Y); if (hit.Type == DataGridViewHitTestType.TopLeftHeader) { // do something here } } 

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1269679.html

(0)
上一篇 1天前
下一篇 1天前

精彩推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注