【问题标题】:how to remove or disable the extra column and row selection function?如何删除或禁用额外的列和行选择功能?
【发布时间】:2016-07-28 03:37:03
【问题描述】:

我有网格视图,并且我已经禁用了列自动宽度,因此我可以手动设置列的大小。手动调整大小后有一个额外的空白列。我想要的是:

  1. 要禁用当我在活动中单击列外部时的选择行功能,编码并生成
  2. 删除多余的列。

我已经成功地用这个事件或代码完全隐藏了剩余的列

  private void gridView1_CustomDrawColumnHeader(object sender, ColumnHeaderCustomDrawEventArgs e)
    {
        if (e.Column == null)
        {
            e.Handled = true;

        }
    }

问题是我仍然可以点击类型的外部,并且行选择仍然跟随我点击的地方

【问题讨论】:

  • iam 使用此代码隐藏。但问题是我仍然可以单击它并且行选择仍然启用`private void gridView1_CustomDrawColumnHeader(object sender, ColumnHeaderCustomDrawEventArgs e) { if (e.Column == null) { e.Handled = true; } }' 我想如果有另一种方法来删除 xtra 列
  • 我的错!知道如何解决吗?
  • 第一个问题应该是:多余的列是从哪里来的,你真的想拥有它吗?如果你不想要它,你必须决定是要显示(默认为深灰色)背景还是要调整列的大小或要调整整个 DGV 的大小。至于保留它,仍然只在内部选择前三列:将 SelectionMode 设置为 RowHeader 并编码 cellclicked 事件以进行您想要的选择。
  • 额外的列来自我手动调整列的大小并禁用导致额外列的自动列宽可能是因为我没有在视图中使用完整列。我不想要它。想要它但需要禁用点击行选择
  • 抱歉,我可能弄错了控件:我们是在谈论 Winforms DataGridView 还是其他控件? (您将其标记为GridView).. 在DataGridview没有额外的列在您调整列大小时显示,只是没有任何标题的额外空间,点击额外的空间不会不 选择一行,不管是哪个SelectionMode!

标签: c# winforms devexpress xtragrid


【解决方案1】:

按以下方式处理GridView.MouseDown事件:

private void gridView1_MouseDown(object sender, MouseEventArgs e) {
    GridView view = (GridView)sender;
    var hi = view.CalcHitInfo(e.Location);
    Console.WriteLine(hi.HitTest);
    if (hi.InRow && !hi.InRowCell)
        DXMouseEventArgs.GetMouseArgs(e).Handled = true;
}

【讨论】:

  • 工作得很好。但有点不明白每个代码的作用..它对我来说是新的,你能解释一下吗?
  • 选择发生在网格中的鼠标事件上。所以,我们处理第一个鼠标事件(MouseDown),检查我们点击的区域。如果它是一个空白区域(网格点击信息会告诉您单击一行,而不是单击单元格),我们将停止通过 DXMouseEventArgs.GetMouseArgs(e).Handled = true 行进一步处理该事件。
  • 这让我很困惑,为什么 e.handle true = 禁用鼠标事件,如果点击是假的。谢谢你的解释
猜你喜欢
  • 2017-02-07
  • 1970-01-01
  • 2014-01-13
  • 2011-03-24
  • 1970-01-01
  • 2020-12-04
  • 2019-03-10
  • 2021-01-16
  • 1970-01-01
相关资源
最近更新 更多