gpt4 book ai didi

C# 无法在设计器 Visual Studio 2010 中存储设计时间值

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

在我的项目中,我有一个自定义面板:

[Serializable]
public partial class ButtonPanel : UserControl
{
private List<CompactButton> _compactButtons;

public ButtonPanel()
{
InitializeComponent();

_compactButtons = new List<CompactButton>();

AddButtons();
}

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), Editor(typeof(ButtonPanelXEditor), typeof(UITypeEditor))]
public List<CompactButton> CompactButtons
{
get { return _compactButtons; }
set { _compactButtons = value; }
}

private void AddButtons()
{
CompactButton c = new CompactButton();
c.Enabled = baseButton1.Enabled;

CompactButton c2 = new CompactButton();
c2.Enabled = baseButton2.Enabled;

_compactButtons.Add(c);
_compactButtons.Add(c2);
}
}

面板上有两个按钮(baseButton1 和baseButton2)。这些按钮的状态必须保存在设计器中。但是因为 Button 类不可序列化,我创建了一个自定义类来存储最重要的属性,CompactButton:

[Serializable]
public class CompactButton
{
#region Member variables
private bool _visible;
private bool _enabled;
private string _tooltip;
private string _name;
#endregion

#region Constructor
public CompactButton()
{ }
#endregion

#region Properties
public string Name
{
get { return _name; }
set { _name = value; }
}
public bool Visible
{
get { return _visible; }
set { _visible = value; }
}
public bool Enabled
{
get { return _enabled; }
set { _enabled = value; }
}
public string ToolTipText
{
get { return _tooltip; }
set { _tooltip = value; }
}
#endregion
}

正如您在 ButtonPanel 类中看到的,我有一个属性 CompactButtons,它返回一个包含 CompactButtons 的列表。

当我在设计器中添加我的 ButtonPanel 然后构建我的应用程序时,我收到此错误:

Error 1   Could not find a type for a name.  The type name was

'System.Collections.Generic.List`1[[ButtonPanelX.CompactButton, ButtonPanelX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. Line 131, position 5. D:\Projecten\ButtonPanelX\ButtonPanelX\Form1.resx 131 5

我该怎么做才能解决这个问题?

最佳答案

我创建了一个新项目,粘贴了您的示例,它对我有用(在删除了对示例中未包含的内容的引用之后)。

根据您的错误消息,我想您更改了代码中的某些内容并重新编译,现在 RESX 序列化格式不再有效。请注意,一旦您获得序列化数据,您将在 what you can change 中受到很大限制。在你序列化的类中。

我建议手动从设计器文件 resx 文件中删除控件(使用 xml 编辑器打开 resx)并重新放置控件。

我有一个额外的提示:您根本不需要在 CompactButton 上使用 [Serializable]。如果删除它,VisualStudio 将按代码序列化到 designer.cs 文件而不是 resx 文件中。我几乎总是喜欢这样做,因为这样我就可以在发生变化时手动编辑生成的代码。

关于C# 无法在设计器 Visual Studio 2010 中存储设计时间值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4670650/

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