c# - 将 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);
}
解决方案
推荐阅读
- javascript - 单击具有相同 id 的 div
- javascript - 如何将变量传递给 Javascript 映射函数
- javascript - 如何将机器人的状态从播放更改为收听?
- arrays - 无法在 GLSL 中创建简单的结构数组
- azure - Azure Automation Hybrid On-Prem Linux Worker 不接受作业
- reactjs - 如何在 React 的 firebase firestore 中获取/生成当前时间戳
- c++ - 未解决的外部,缺少 comdlg32.lib 库
- python - Pycharm 无法运行 WSL 2 解释器,因为 Source Root 被标记为 windows 目录而不是 WSL 目录
- android - 为什么我不允许访问手机信息
- html - 使用正则表达式样式自动生成 html 属性