gpt4 book ai didi

c# - 如何在设计时显示 datagridview 行和项目

转载 作者:行者123 更新时间:2023-11-30 16:37:26 31 4
gpt4 key购买 nike

我想在设计模式/设计时显示 DataGridView 行。有办法实现吗?

我曾尝试在控件的构造函数中使用此函数:datagridview1.Rows.Add();,但行及其项目仅在运行时中显示。 p>

我需要在设计时 显示行及其项的原因是我要自定义datagridview 控件 的外观。因此,每次我进行更改(如更改 AlternatingRowColor、RowFont 等)时,我都必须运行控件才能看到更改。

这会占用时间。

如果我可以在 designtime/designmode 中显示所有行,那么我将能够在进行更改时立即看到更改,这将节省很多时间。

我正在 Windows 窗体 中自定义 Datagridview 控件 的外观,并且我使用的是 C#

我没有在代码中定义控件,而是将控件从“控件”选项卡拖放到 Winform 上。

谢谢。

最佳答案

我会添加 designer verbDataGridView 的上下文菜单并按所需行为分配它。例如(作为使用虚拟数据预览的起点):

using System;
using System.ComponentModel.Design;
using System.Linq;
using System.Windows.Forms;
using System.Windows.Forms.Design;
public class MyDataGridView : DataGridView
{
private IDesignerHost designerHost;
protected override void OnHandleCreated(EventArgs e)
{
base.OnHandleCreated(e);
if (DesignMode && Site != null)
{
designerHost = Site.GetService(typeof(IDesignerHost)) as IDesignerHost;
var designer = (ControlDesigner)designerHost?.GetDesigner(this);
designer?.Verbs?.Add(new DesignerVerb("Preview with dummy data", (o, a) =>
{
//Some logic to add dummy rows, just for example
this.Rows.Clear();
if (Columns.Count > 0)
{
var values = Columns.Cast<DataGridViewColumn>()
.Select(x => GetDummyData(x)).ToArray();
for (int i = 0; i < 2; i++)
Rows.Add(values);
}
}));
designer?.Verbs?.Add(new DesignerVerb("Clear data", (o, a) =>
{
this.Rows.Clear();
}));
}
}
private object GetDummyData(DataGridViewColumn column)
{
//You can put some logic to generate dummy data based on column type, etc.
return "Sample";
}
}

结果,您将看到两个菜单项添加到上下文菜单,通过单击“使用虚拟数据预览”,您将看到在设计时添加到控件的两个虚拟行:

enter image description here

关于c# - 如何在设计时显示 datagridview 行和项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58265138/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com