c# - 动态添加的标签不出现

标签 c# .net winforms

我有一些标签和一堆文本框,我想将它们动态添加到面板中。文本框已添加正常并且完全可见,但标签却不然。这是我用来添加标签的代码。

该语言是为 .NET 3.5 WinForms 应用程序编写的 C#。

Label lblMotive = new Label();
lblMotive.Text = language.motive;
lblMotive.Location = new Point(0, 0);

Label lblDiagnosis = new Label();
lblDiagnosis.Text = language.diagnosis;
lblDiagnosis.Location = new Point(20, 0);

panelServiceMotive.Controls.Add(lblMotive);
panelServiceMotive.Controls.Add(lblDiagnosis);

panelServiceMotive 是应该显示标签以及前面提到的文本框的面板控件。 language 是一个自己编写的 Language 类的对象,它工作正常,与这里无关。

我希望这些信息足以获得帮助。

最佳答案

看起来主要问题是添加到面板的控件的位置。 Location 属性保存控件左上角相对于父控件(在其中添加子控件的控件)左上角的坐标。查看您的代码,您似乎将一个控件添加到另一个控件之上。请注意,您始终设置lblDiagnosis.Location = new Point(0, 0);。如果您从代码添加控件,您添加的第一个控件将覆盖您在同一位置添加的所有其他控件(与使用设计器时不同)。

您可以尝试这样的方法来检查标签是否正常:

Label lblMotive = new Label();
lblMotive.Text = language.motive;
lblMotive.Location = new Point(0, 40);

Label lblDiagnosis = new Label();
lblDiagnosis.Text = language.diagnosis;
lblDiagnosis.Location = new Point(0, lblMotive.Location.Y + lblMotive.Size.Height + 10);

panelServiceMotive.Controls.Add(lblMotive);
panelServiceMotive.Controls.Add(lblDiagnosis);

关于c# - 动态添加的标签不出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13699821/

相关文章:

c# - 是否有针对具有外部 set/get 方法的强类型类成员的 C# 模式?

c# - PayPal REST API - 代表其他人付款

c# - 为每一行分别更改 gridview 中控件的 css

c# - 将最后一项推送到 Observable(序列)

c# - 用于在 UI 和 C 代码之间进行消息传递的套接字?

.net - .NET Winform-多行 ListView (请参见屏幕截图)

c# - 方法未找到 : void Amazon. S3.AmazonS3Client..ctor() |带有 .NET/Xamarin 的 AmazonS3

c# - Entity Framework 4.3.1 到 6 EDMX (ObjectContext)

c# - 如何将选择的存储过程映射到 EF 3.5 中的实体?

C# ListView 项目图像