在我的mainForm中,我在其Form_Load中检查已安装的compoenet。如果没有安装,我会调用另一个Form(WaitingDialog)来显示instalaltion的状态。我将waitingDialog称为:
waitDlg = new WaitingDialog(null); // Parent is set to null
waitDlg.set("Checking....", "Components"); // Set 2 Labels
waitDlg.Title = "Installing...";
waitDlg.Show();
使用上面的代码可以看到等待表单,但是看不到文本集。标签的那部分(文字大小)是白色背景,但没有文字可见。
我必须只在mainForm的Form_Load中执行此操作,就好像componetns不在那里,然后mainForm安装它,approp消息显示在waitingDlg表单上。
如何以waitDlg形式显示文本的方式处理此问题?
WaitingDialog代码:
public partial class WaitingDialog : Form
{
private string title;
private string message;
private bool cancel;
private ParentForm myParent = null;
public WaitingDialog()
{
InitializeComponent();
Cancel = false;
this.StartPosition = FormStartPosition.CenterScreen;
}
public WaitingDialog(ParentForm parent) : this()
{
if (parent != null)
{
myParent = parent;
this.StartPosition = FormStartPosition.Manual;
}
}
public WaitingDialog(string title, string message)
: this()
{
label1.Text = title;
msgLbl.Text = message;
// Title = title;
// Message = message;
}
private void WaitingDialog_Load(object sender, EventArgs e)
{
}
public string Title
{
get { return title; }
set { title = value;
label1.Text = title;
Invalidate();
}
}
public string Message
{
get { return message; }
set { message = value;
msgLbl.Text = value;
Invalidate();
}
}
public void set(string title, string message)
{
Title = title;
Message = message;
}
public void set(string title, string message, bool showButton)
{
Title = title;
Message = message;
this.cancelBtn.Visible = showButton;
}
public void showCancelButton(bool showButton)
{
this.cancelBtn.Visible = showButton;
}
public bool Cancel
{
get { return cancel; }
set { cancel = value; }
}
private void cancelBtn_Click(object sender, EventArgs e)
{
Console.WriteLine("CANCEL BUTTON CAUGHT");
Cancel = true;
}
}
// TRIED CAlling as :
waitingDlg = new WaitingDialog("Installing", "Components");
waitingDlg.Text = "Install Components"; //CAN SEE THIS IN TITLE
waitingDlg.Show();
但标签文字无法显示,其背景(文字大小)为白色。
希望这会有所帮助。如果您需要更多,很乐意分享更多。
由于
答案 0 :(得分:0)
检查WaitingDialog调用的构造函数;
InitializeComponent();
还在表单加载中放置一个断点,并确保将要更新的标签的Text属性设置为waitDialog.Title属性。使用此断点也可以检查waitDialog.Title属性值。
答案 1 :(得分:0)
因为我在显示waitingDlg时正在对组件进行instalaltion。 Hnece CPU保持忙碌,因此UI线程无法绘制标签。我在后台线程的ReportProgress中显示并设置标签,并在DoWork中调用lthe安装。
这解决了问题,并按预期显示了一切。
感谢你们所有人的时间和努力。
由于