• 締切済み

フォームの×ボタンを無効にするには

C#.NETでプログラミングしています。 フォームの×ボタンを無効にするために「RemoveMenu()」を使っていますが、処理の負荷が大きくなった時に一旦別のウィンドウに隠して再表示したときに×ボタンが有効になってしまいます。 最小化ボタンが必要なので、ControlBoxを無効にすることもできません。 なんとか回避する方法はないでしょうか。

みんなの回答

  • thyristor
  • ベストアンサー率76% (13/17)
回答No.3

私の環境でも再現しました。確かに×ボタンが有効になってしまいますね。 他にも方法があるかもしれませんが、とりあえず重い処理を別スレッドで実行したら解決しました。

kmor
質問者

お礼

度々ありがとうございます。 別スレッドですか。試してみます。 ありがとうございました。

  • Kuppycat
  • ベストアンサー率50% (109/216)
回答No.2

http://www.atmarkit.co.jp/fdotnet/dotnettips/142closebtn/closebtn.html ↑ こちらを参考に自分の環境でテストしました。 うまくできましたよ。

kmor
質問者

お礼

ありがとうございます。 まったくその通りにしているんですが、処理の負荷がかかった時(下記の処理など)、一旦別のウィンドウに隠して、再度表示したときに、処理が終わるまで×印が出てくるんです。 それを回避したいんですが... ---------------- for(i=0;i<1000;i++) {  for(j=0;j<1000;j++)  {   if (j > 0)   {    k = i / j;    label1.Text = k.ToString();   }  } } ---------------- ありがとうございました。

  • thyristor
  • ベストアンサー率76% (13/17)
回答No.1

単純に×ボタンクリックによるFormのCloseを防ぎたいのでしたら、FormClosingイベントを追加し、 e.Cancel = true; でOKです。

kmor
質問者

お礼

ありがとうございます。 e.Cancel = true; とすると自分で用意した閉じるためのコマンドボタンも無効になってしまいます。 また、×ボタンを有効にしたくないんです。(そういう仕様なんです) よろしくお願いします。

関連するQ&A