2012-01-15 6 views
1

私の研究に基づいて、MessageBoxフォームを親フォームのCenterにする唯一の方法は、カスタムMessageBoxクラスを作成することです。私は正常にCustomMessageBoxフォームを実装し、親フォームにエラーと情報メッセージを集中できるようになりました。しかし、新しいCustomMessageBoxフォームをインスタンス化する必要がないように、CustomMessageBoxフォームを静的にする方法を理解できません。エラーと情報のためのカスタムMessageBox

私はMessageBoxクラスの基本的なバージョンは以下の通りです

CustomMessageBox.Show(タイプ、メッセージ、など...):私はちょうど下記のような静的メソッドを呼び出すことができるようにしたいです。理想的には、私はCustomMessageFormをインスタンス化することなくこのフォームを表示する機能を持っていたいと思います。これは可能ですか?

namespace MarineService 
{ 
    public partial class CustomMessageForm : DevExpress.XtraEditors.XtraForm 
    { 
     private static CustomMessageForm form = new CustomMessageForm(); 

     public CustomMessageForm() 
     { 
      InitializeComponent(); 
     } 

     public void ShowDialog(string type, string message) 
     { 
      this.Text = type + "Information"; 
      this.groupMessage.Text = type + "Information"; 
      this.memoEditMessage.Lines[0] = message; 

     } 
    } 
} 
+0

私がCustomMessageBoxで作業していたときに気になったアイデアは、CustomMessageBoxの新しいインスタンスを作成して表示する静的メソッドを持つ静的ユーティリティクラスを作成することでした。しかし、このソリューションが実装されている場合、新しいCustomMessageBoxを親ウィンドウに合わせるために、親フォームをユーティリティクラスの静的メソッドに渡す必要があります。私はWindowsプログラミングに新しいので、これが良いデザインであるかどうかはわかりません。コメントやフィードバックは大歓迎です。 – Grasshopper

+2

[Winforms - MainFormの中央にMessageBoxを表示させるにはどうすればいいですか?](http://stackoverflow.com/questions/2576156/winforms-how-can-i-make-messagebox-appear-centered-on-mainform ) –

答えて

2

このような何か:

public partial class CustomMessageForm : DevExpress.XtraEditors.XtraForm 
{ 
     private static CustomMessageForm form = new CustomMessageForm(); 

     public CustomMessageForm() 
     { 
      InitializeComponent(); 
     } 

     private void ShowDialog(string type, string message) 
     { 
      form .Text = type + "Information"; 
      form .groupMessage.Text = type + "Information"; 
      form .memoEditMessage.Lines[0] = message; 
      form.ShowDialog(); 

     } 

     public static Show(string type, string message) 
     { 
      if(form.Visible) 
       form.Close(); 
      ShowDialog(type, message); 
     } 
} 

そして、このように使用します。

CustomMessageForm.Show("customtype", "warning!"); 

そのような何か、単にアイデアを。

これはあなたが求めているものでない場合は、明確にしてください。

+0

ありがとう、これは私が必要としていたものです。私はHans投稿を読んでいますが、私はあなたの投稿を読むまで、クラス全体を静的にしなくても、Showメソッドを静的にすることができます。ヘルプをよろしくお願いいたします。 – Grasshopper

関連する問題