首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义DataGridViewRow问题

自定义DataGridViewRow问题
EN

Stack Overflow用户
提问于 2011-07-20 02:55:13
回答 1查看 1.1K关注 0票数 2

我正在尝试创建一个自定义的DataGridViewRow,它将充当分隔符(将数据分成组)。我是通过覆盖DataGridViewRow类中的PainCells方法实现的,如下所示:

代码语言:javascript
复制
protected override void PaintCells(Graphics graphics, Rectangle clipBounds, Rectangle rowBounds, int rowIndex, DataGridViewElementStates rowState, bool isFirstDisplayedRow, bool isLastVisibleRow, DataGridViewPaintParts paintParts)
    {  
        graphics.FillRectangle(new SolidBrush(BackgroundColor),rowBounds);

        StringFormat format = new StringFormat {Alignment = StringAlignment.Center,LineAlignment = StringAlignment.Center};
        graphics.DrawString(Text, this.DataGridView.Font, new SolidBrush(ForeColor), rowBounds,format);
    }

其中Text、BackgroundColor和ForeColor是我的SeparatorDataGridViewRow类的属性。这些行看起来完全像我想要的那样。但这只是“封面”,因为在绘制的矩形下面仍然有原始的数据网格单元格。特别是我添加的带有删除按钮表单DataGridViewButtonColumn的单元格。正因为如此,如果我点击按钮所在的单元格,我的分隔行就会被删除。

我不认为这是实现我想要实现的东西的正确方法,所以如果你们能告诉我正确的方向,或者告诉我可以用这个解决方案做什么,以阻止用户使用这一行做任何事情,无论“在绘制的矩形下面”是什么,我都会很高兴。

我几乎没有创建自定义控件的经验,所以我真的不知道要覆盖什么方法,或者添加什么来实现某些目标。感谢您的每一次帮助:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-22 05:13:28

好了,我部分解决了我的问题。我不知道这个解决方案是否好,它带来了另一个问题,这对我来说是一个谜。

在我的SeparatorDataGridViewRow上,我将标签设置为“分隔符”。然后,我创建了自己的DataGridView控件,在其中覆盖了OnUserDeletingRow方法:

代码语言:javascript
复制
    protected override void OnUserDeletingRow(DataGridViewRowCancelEventArgs e)
    {
        if (e.Row.Tag != null && e.Row.Tag.ToString().Equals("Separator"))
        {
            e.Cancel = true;
            return;
        }
        base.OnUserDeletingRow(e);
    }

这样,我的Separator行就不会被用户删除。但是现在奇怪的事情发生了。我有一个这样的DataGridView:

当我选择名称为"2“的行并将其删除时,一切正常:

它适用于所有行。但是,如果我选择任何分隔符行并按Delete,它不会被删除,但如果我删除它上面的任何行,就会发生这种情况:

在本例中,我选择了Separator 2,然后删除了名为"2“的行。这很奇怪,因为实际的行正在被删除,而所选行实际上是Separator2行。这是某种油漆问题。但是我不知道为什么只有当我之前“尝试”删除Separator行时才会发生这种情况。在删除上述任何内容之前,当我尝试删除Separator行时,绘制过程中发生了什么变化?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6752522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档