• 締切済み

別formの多重起動防止

どうもお世話になってます。 visual C++/CLIでプログラミングしています。 ボタン1を押したら別のフォームをモードレスで 表示させたいのですが private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { Form2^ otherform = gcnew Form2(); otherform->Show(); } このようにした場合ボタンを押すたびに次々とフォームが 多重起動していきます。これを1つだけ表示させるように したいのですが… こちらのサイト http://dobon.net/vb/dotnet/form/singleform.html の方を参考にしてC++用に書き直してみたいのですが どのように書いたらよいか教えてもらえないでしょうか? よろしくお願いします。 自分は以下のように書き直してみたんですが 大量のエラーを吐き出してしまいました。 private: static Form2^ _instance; public:  static Form2 Instance{    get     {     if (_instance == null || _instance.IsDisposed)     _instance = gcnew Form2();     return _instance;     } } private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { Form2->Instance->show(); }

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

プロパティの宣言方法が C#と C++では違います public:  __property Form2^ get_Instance()  {   if( _instance == null || _instance->get_IsDisposed() )    _instance = gcnew Form2();   return _instance;  } といった具合になると思いますよ ... # nullが未定義 といったエラーが表示されるなら #define null 0L をヘッダーの先頭付近で宣言しましょう ...

smis
質問者

補足

#define null OL private: static Form2^ _instance; public: _property Form2^ get_Instance() { if(_instance == null || _instance->get_IsDisposed()) _instance = gcnew Form2(); return _instance } private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { Form2->get_Icstance->show(); } 上のように 教えてもらったのを書いてみたんですが… 構文エラー : ';' が、識別子 'Form2' の前に必要です。 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません 'OL' : 定義されていない識別子です。 'get_IsDisposed' : 'form多重起動防止::Form2' のメンバではありません。 構文エラー : ';' が '->' の前にありません。 構文エラー : ';' が '->' の前にありません。 このようにエラーが出てしまいました。 どこかまだおかしいところがあるのでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A