在我的解决方案中,我有多个表单/视图,并希望使用全局属性来设置基本表单控件属性(字体名称,大小,颜色等)。
Designer.cs文件是一个局部类,当您执行“查看代码”时,它显然是主要分类的一部分。这是继承自“Form”的类。所以我所做的是创建另一个类文件,我称之为ViewMaster.cs,并从中继承“Form”并将我的ViewMaster类设置为我的表单的继承类。
MembershipView.cs
public partial class MembershipView : ViewMaster {
...
}
ViewMaster.cs
public class ViewMaster : Form {
public Font fontButton = new Font("Microsoft Sans Serif", 11F, FontStyle.Regular, GraphicsUnit.Point, 0);
public Font fontLabel = new Font("Microsoft Sans Serif", 11F, FontStyle.Regular, GraphicsUnit.Point, 0); // new Font("Arial", 18F, FontStyle.Regular, GraphicsUnit.Point, 0);
public Font fontGrid = new Font("Microsoft Sans Serif", 10F, FontStyle.Regular, GraphicsUnit.Point, 0);
public Size sizeButton = new Size(125, 28);
}
MembershipView.Designer.cs
partial class MembershipView {
...
this.label5.Font = fontLabel;
...
this.btnSearch.Font = fontButton;
...
}
现在,当我单击“开始”或“开始调试”时,这是有效的,但是当我双击Form Viewer(在我的情况下为MembershipView.cs)时,我收到如下错误:
变量'fontLabel'未声明或从未分配。
变量'fontButton'未声明或从未分配。
变量'sizeButton'未声明或从未分配。
变量'fontGrid'未声明或从未分配过。
我能够点击“忽略并继续”。此时,虽然设计器/表单中的大小/字体视图为8.25,所以它显然不会从我继承的属性中读取。再一次 - 当我点击“开始”时,一切正常。
有人有任何建议可以解决这个问题吗?
谢谢! 麦克
答案 0 :(得分:0)
设计人员无法加载,因为当设计人员对MembershipView.Designer.cs
文件中的代码进行反序列化时,它会看到this.label5.Font = fontLabel;
,因此它会在文件中查找fontLabel
字段的声明并且还希望在文件的InitializeComponent
中找到字段的初始化。但声明和初始化并不存在于文件中,因此设计人员无法正确加载。
有关设计师如何工作的更多信息,请查看此文章。该帖子还包含一个非常有趣的例子:
如何进行基本设置,例如字体,尺寸?
您可以使用属性绑定到应用程序设置,而不是将此类设置放在基础中。这样,您可以创建一些基本设置,例如ButtonFont
Font
类型或ButtonSize
Size
类型,然后在设计时使用属性网格,绑定{{1} Font
的{{1}}属性控制这些设置属性。您还可以将这些设置用于控件的其他属性。
要了解有关应用程序设置的属性绑定的更多信息,请查看以下文章:
答案 1 :(得分:0)
我遇到了同样的问题,并已解决。实际上,Visual Studio仅与X86控件一起使用,您不能在X64模式下创建用户控件并使用它。
您应该在Any CPU模式下添加一个新的类库,然后构建该类库。然后可以在项目中添加其DLL。完成。
如果不是,则必须转到配置管理器并将Active solution platform设置为X64,然后对所有子项目执行此操作。请记住,必须检查构建选项。并转到类库的属性,然后单击生成选项卡。然后将平台目标设置为Any CPU。