我试图通过增加字体大小来使Kiosk应用程序更容易访问
主表上没问题。
我在使用相同消息的小表单替换MessageBoxes(我认为无法增加字体大小)时遇到问题。
这是我遇到问题的地方。主表单不能查看错误表单及其标签来设置文本。我已经尝试在错误表单上为私有标签设置属性,但它仍然无效。
我将非常感谢任何帮助。我一直在尝试应用我在从各种C#源读取几个线程时学到的东西。
我注意到两件奇怪的事情:
LblNotCheckedInBecause
不会出现在列表中。LBlNotCheckedInBecause
。get语句,似乎我应该引用set语句,因为我试图设置该值。以下是我认为涉及的代码部分:
来自ErrorForm.Designer.cs
:
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Label lblNotCheckedInBecause;
// property I created to try to be able to change the label
public string LblNotCheckedInBecause
{
get { return this.lblNotCheckedInBecause.Text; }
set { this.lblNotCheckedInBecause.Text = value; }
}
来自MainForm.cs
:
// this is what I'm trying to replace
MessageBox.Show("You were not checked in because of the following reasons:" + sErrors);
// this line is causing a compiler error
ErrorForm.LblNotCheckInBecause = "You were not checked in because of the following reasons:" + sErrors;
编译错误:
错误1非静态字段需要对象引用, 方法或财产 'LogisticsKiosk.ErrorForm.LblNotCheckInBecause.get'C:\ Documents and 设置\我的文档\ Visual Studio 2005 \ Projects \ LogisticsKiosk \ Forms \ MainForm.cs 107 17 LogisticsKiosk
答案 0 :(得分:4)
您无法访问ErrorForm,就好像它是静态的一样。这只是类定义,您需要在ErrorForm的实例上设置属性。
在您的应用中的某个位置,您创建了一个新的ErrorForm。您需要获取该变量并在其上设置LblNotCheckedInBecause属性。
寻找这样的代码;
ErrorForm errorFrm = new ErrorForm();
errorFrm.Show();
如果您有对该变量的引用,则可以执行此操作;
errorFrm.LblNotCheckedInBecause = "Some Reason";
以下方法不起作用,因为您的属性不是静态的(如果不创建您可能不想做的单例,则无法使其静态化)
// Doesn't work
ErrorForm.LblNotCheckedInBecause = "Some Reason";
答案 1 :(得分:2)
另一个要注意的快速事项:您提到您编辑了以下代码: ErrorForm.Designer.cs。
我建议将添加的代码放在ErrorForm.cs中。编译器喜欢认为它拥有XXXXXX.Designer.cs的专有权,并且已知在对文件进行自动编辑时会吹掉更改。
答案 2 :(得分:1)
您需要在使用它之前实例化ErrorForm类。如果表格是静态的,您就不能使用它。
ErrorForm ef = new ErrorForm();
ef.LblNotCheckedInBecause = "Your error text";
ef.Show();
答案 3 :(得分:1)
感谢大家的帮助。在实例化表单后,我能够使代码正常工作。有趣的是,Intellisense花了几分钟才赶上来。
答案 4 :(得分:0)
要记住的一件事是,另一位开发人员阅读代码和理解是多么容易。 我看到的最佳选择是
ErrorForm form = new ErrorForm(); form.SetErrorLableMessageTo(“错误文本”); form.Show();
这是非常易读的。在我们去查看构造函数中发生了什么之前,在构造函数中传递args并没有显示出意图。除了你想要做的所有情况,如果你选择构造方式,那么你受到约束(不是灵活的设计)。