gpt4 book ai didi

c# - DataGridView AutoGenerateColumns以某种方式设置为true

转载 作者:太空宇宙 更新时间:2023-11-03 17:47:16 26 4
gpt4 key购买 nike

我像这样从DataGridView派生DataGridViewEx类:

public class DataGridViewEx : DataGridView
{
// ...

[DefaultValue(false)]
[Browsable(true)]
public new bool AutoGenerateColumns
{
get { return base.AutoGenerateColumns; }
set { base.AutoGenerateColumns = value; }
}

public DataGridViewEx()
{
AutoGenerateColumns = false;
}

// ...
}


但是,当我将DataGridViewEx控件添加到窗体时,我看到AutoGenerateColumns属性设置为true!我的代码没有在任何地方将其设置为true,因此“别人” :)将其设置为true。当然,上面列出的代码会被执行,并且AutoGenerateColumns会暂时设置为false,但是稍后它将变为“ true”。

有任何想法吗?

最佳答案

我下载了.NET源,以便能够调试.NET框架,如下所示:
http://referencesource.microsoft.com/serversetup.aspx

然后,在DataGridView.AutoGenerateColumns属性上放置一个断点,并在System.Windows.Forms.Design.DataGridViewDesigner.Initialize()方法中将其设置为true。
我在反射器中打开了此方法,并看到了以下内容:

public override void Initialize(IComponent component)  
{
...
view.AutoGenerateColumns = view.DataSource == null;
...
}


因此,由于DataSource为null,Initialize()方法将AutoGeneratedColumns设置为true :(

我想从DataGridViewDesigner类派生我自己的设计器以覆盖此行为,但是DataGridViewDesigner是内部的,所以我不能。

因此,似乎没有办法正确解决此问题:(

关于c# - DataGridView AutoGenerateColumns以某种方式设置为true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1189576/

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