我意识到以前在这里提出过类似的问题,但是在搜索了该站点之后,我没有找到任何可以解决我遇到的特定问题的东西。我在 VS 2017 中使用 C#。我有一个基本表单,正在尝试创建/使用继承的表单。基本窗体 (frmDataEntry) 包含多个控件(一个 ListView、一个 ComboBox、两个标签、四个按钮和一个面板。继承窗体 (frmEditRanch) 向面板添加六个控件:三个标签、两个文本框和一个图片框。
除了面板内的标签外,所有这些控件都按预期显示和运行。面板外的标签很好,里面的文本框和图片框也是如此;但面板内的标签控件不显示。我难住了。
我在其他帖子中看到子窗体需要在代码中创建控件,所以我也尝试过(创建标签并将它们添加到代码中的面板),但结果没有什么不同。
不确定需要多少代码才能有所帮助,但这里是一些可能有用的初始化代码。
基本形式:
public enum FormState { Idle, Adding, Editing }
public partial class frmDataEntry : Form
{
protected AgData db = new AgData();
protected Ranch ranch;
public const int vScrollBarWidth = 21;
public frmDataEntry()
{
InitializeComponent();
}
public frmDataEntry(int RanchID) : this()
{
ranch = db.GetRanch(RanchID);
}
protected void frmDataEntry_Load(object sender, EventArgs e)
{
if (DesignMode) return;
UpdateRanchNameComboBox();
cbRanchName.SelectedItem = ranch?.Name;
ResetDataFields();
SetFormControls(FormState.Idle);
CreateListViewHeaders();
UpdateRecordList();
}
...
儿童表格:
public partial class frmEditRanch : frmDataEntry
{
EditMode mode;
public frmEditRanch(EditMode editMode, int RanchID = 0) : base(RanchID)
{
InitializeComponent();
mode = editMode;
}
private void frmEditRanch_Load(object sender, EventArgs e)
{
AddDataControls();
}
protected override void AddDataControls()
{
Label lblName = new Label();
lblName.Font = new Font(this.Font.FontFamily, 12, FontStyle.Regular);
lblName.Text = "Name";
lblName.TextAlign = ContentAlignment.MiddleLeft;
lblName.AutoSize = false;
lblName.Size = new Size(45, 20);
lblName.Location = new Point(10, 23);
pnlDataControls.Controls.Add(lblName);
...
pnlDataControls.Refresh();
}
...