2011-06-22 6 views
0

私のmainFormでは、Form_Loadにインストールされているコンパウンドをチェックします。それらがインストールされていない場合は、別のフォーム(WaitingDialog)を呼び出してインスタンスの状態を表示します。私はwaitingDialogを以下のように呼び出します:他のフォームをmainFormから呼び出す - 他のフォームに表示されないコンポーネント

上記のコードでは、待機中のフォームは表示されますが、テキストのセットは表示されません。ラベルのその部分(テキストサイズ)は白い背景ですが、テキストは表示されません。

mainFormのForm_Loadでこれを実行する必要があります。これは、componetnが存在しないとmainFormをインストールし、appropメッセージがwaitingDlgフォームに表示されるためです。

これを対処するには、waitingDlgフォームでもテキストが表示されますか?

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(); 

しかし、ラベルのテキストが表示されないことができ、その背景(テキストのサイズ)が白です。

これが役に立ちます。あなたがもっと必要な場合は、もっと共有することがうれしいです。

ありがとう

+2

あなたの 'set'メソッドは何ですか? – Kamyar

+0

フォームを作成するときにラベルとタイトルを定数値に設定しています。これらのラベルとタイトルをデザイナーに設定するだけですか? –

+0

WaitingDialogからsomコードを投稿できますか? – Bassetassen

答えて

0

WaitingDialogのコンストラクタがコールされていることを確認します。

InitializeComponent(); 

はまた、フォームのロード中にブレークポイントを入れて、あなたはwaitDialog.Titleプロパティに更新したいラベルのTextプロパティを設定していることを確認してください。このブレークポイントを使用して、waitDialog.Titleプロパティ値も検査します。

0

私はwaitingDlgの表示にコンポーネントのインストールを行っています。 CPUがビジーのままであるため、UIスレッドはラベルをペイントできませんでした。バックグラウンドスレッドのReportProgressでラベルを表示および設定し、DoWorkでltheのインストールを呼び出します。

これは問題を解決し、期待通りにすべてをうまく表示します。

時間と努力のおかげで皆様のおかげで

ありがとうございました

関連する問題