我正在为一个类开发一个WinForm应用程序,我遇到了一个我似乎无法找到根的bug。当我运行应用程序时,一切都有效,除了错误标签应该是错误的用户输入。起初我以为我写了错误的事件处理程序,所以我在启动时停止隐藏它,但标签仍然缺失。我不确定我是否遗漏了某些后端文件中的内容,或者我是否遗漏了一些非常明显的内容。
这是创建标签的功能。
private void InitializeErrorLabel()
{
int width = 200, height = 13,
anchorY = this.Label.Location.Y - this.Label.Size.Height - 3;
// Initialize Component
this.ErrorLabel.AutoSize = true;
this.ErrorLabel.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold,
System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.ErrorLabel.ForeColor = System.Drawing.Color.Red;
this.ErrorLabel.Location = new System.Drawing.Point((XSize - width) / 2, (anchorY - height));
this.ErrorLabel.Anchor = System.Windows.Forms.AnchorStyles.Top;
this.ErrorLabel.Name = "ErrorLabel";
this.ErrorLabel.Size = new System.Drawing.Size(width, height);
this.ErrorLabel.Text = "Invalid User ID. Please try again!";
return;
}
这是初始化我的控件的函数:
private void InitializeComponent()
{
this.UserInput = new System.Windows.Forms.TextBox();
this.SwitchMajor = new System.Windows.Forms.RadioButton();
this.SwitchToCS = new System.Windows.Forms.CheckBox();
this.SwitchToCE = new System.Windows.Forms.CheckBox();
this.KeepMajor = new System.Windows.Forms.RadioButton();
this.AcceptValues = new System.Windows.Forms.Button();
this.Label = new System.Windows.Forms.Label();
this.ErrorLabel = new System.Windows.Forms.Label();
this.SuspendLayout();
// Initialize Components
this.InitializeLabel();
this.InitializeMainWindow();
this.InitializeUserInput();
this.InitializeSwitchMajorBtn();
this.InitializeChangeToCSBtn();
this.InitializeChangeToCEBtn();
this.InitializeAcceptValuesBtn();
this.InitializeErrorLabel();
this.ResumeLayout();
this.PerformLayout();
return;
}
再一次,不确定我在这里做错了什么。任何帮助将不胜感激。
谢谢,
答案 0 :(得分:1)
我没有看到您将标签添加到表单控件集合中的位置:
this.Controls.Add(this.ErrorLabel);
如果它不是Controls
集合的成员,那么您将无法看到它。
与此相关的是,如果您定义的其他按钮,复选框等未出现在表单上,我也不会感到惊讶。出于同样的原因。
通常情况下,Designer.cs
文件会自动处理。
答案 1 :(得分:0)
您在什么控制中添加了错误标签?
正常的标签初始化应该看起来像
private System.Windows.Forms.Label ErrorLabel;
this.ErrorLabel = new System.Windows.Forms.Label();
this.groupBox2.Controls.Add(this.ErrorLabel);
this.ErrorLabel.AutoSize = true;
this.ErrorLabel.Location = new System.Drawing.Point(8, 59);
this.ErrorLabel.Name = "ErrorLabel";
this.ErrorLabel.Size = new System.Drawing.Size(55, 13);
this.ErrorLabel.TabIndex = 69;
this.ErrorLabel.Text = "Address 2";
this.ErrorLabel.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
重要强>
必须将标签添加到我的第三行的控件中。您的控件可以是您案件中的表格。在我的情况下它是一个组合框,组框本身必须添加到myform中,myform必须是可见的。
this.groupBox2.Controls.Add(this.ErrorLabel);
答案 2 :(得分:0)
这可能是一个显而易见的答案,但这完全让我感到头疼。我验证了我的代码是否具有this.groupBox2.Controls.Add(this.ErrorLabel);
,就像这里提到的其他代码一样。我不知道为什么我没看到我的标签。我的标签是一个星号*
,在设计器窗口中,它的尺寸很小,但在设计器窗口中却能看到*
。原来我只需要增加它在设计器窗口中的面积,因为在我实际渲染该应用程序时它很小。