首页 > 解决方案 > 将 UserControl 添加到面板时为空白(有时)

问题描述

我有一个用 .Net Framework 4.7.2 编写的应用程序,偶尔需要将新用户控件添加到流面板时,它已成功添加(并撞到面板顶部),但用户控件为空白. 这是我创建它的方法:

int shortcutNumber = NextShortcutNumber();
ctrlIssue newIssueCtrl = new ctrlIssue(issueData, shortcutNumber);
        
newIssueCtrl.IssueDeleted += new System.EventHandler(this.ctrlIssue_IssueDeletedHandler);
newIssueCtrl.Visible = false;
panIssues.Controls.Add(newIssueCtrl);
panIssues.Controls.SetChildIndex(newIssueCtrl, 0);  // Always put it at the top
newIssueCtrl.Visible = true;
newIssueCtrl.Target();

我已将其诊断为 Control.Created 设置为 false。所以 ControlCreated 没有被调用?我现在正在尝试一种解决方法,如下所示:

if (!newIssueCtrl.Created)
{
    newIssueCtrl.CreateControl();
}

我们会看看它是否有效,但这很奇怪。有谁知道为什么不调用 ControlCreated ?它似乎是零星的和不一致的,当它开始发生时,大约有 80% 的时间会发生。

谢谢!

编辑:有人要求查看 ctrlIssue 构造函数。里面有花哨:

    public ctrlIssue(Issue data, int shortcut)
    {
        InitializeComponent();

        mIssueData = data;
        chkPlayPause.TabIndex = 2;
        lblProject.Text = mIssueData.Fields.Project.Name;
        chkPlayPause.Text = mIssueData.Key;
        lblSummary.Text = mIssueData.Fields.Summary;

        InitializeToolTips();
        UpdateShortcut(shortcut);

        mSummaryFontRegular = lblSummary.Font;
        mSummaryFontHover = new Font(mSummaryFontRegular, FontStyle.Underline);
        mProjectFontRegular = lblProject.Font;
        mProjectFontHover = new Font(mProjectFontRegular, FontStyle.Underline);
    }

标签: c#.netwinforms

解决方案


推荐阅读