C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

YesNoダイアログの×ボタンの有効無効

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■85883 / inTopicNo.1)  YesNoダイアログの×ボタンの有効無効
  
□投稿者/ maxi (4回)-(2017/11/30(Thu) 11:30:08)

分類:[C#] 

YesNoダイアログで×ボタンを有効にしたい

private void Button_Click(object sender, EventArgs e)
{
//確認ダイアログの表示
DialogResult dr = MessageBox.Show("本当によろしいですか?",
"確認",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question);


YesNoダイアログだと、画面右上の×ボタンが無効(非活性)になってしまいます。
MessageBoxButtons.OKCancel(OKCancelダイアログ)とMessageBoxButtons.YesNoCancel(YesNoCancelダイアログ)
にした場合は×ボタンが普通に押せるのですが、YesNoダイアログで×ボタンを有効するにはどうすればいいですか?
ControlBox = trueもうまく使えないですし。なぜ非活性になるのでしょう。
引用返信 編集キー/
■85884 / inTopicNo.2)  Re[1]: YesNoダイアログの×ボタンの有効無効
□投稿者/ WebSurfer (1380回)-(2017/11/30(Thu) 11:34:54)
No85883 (maxi さん) に返信

何を作っているのか(Windows Forms?, ASP.NET Web Forms? WPF? その他?)と開発環境(OS, .NET,
Visual Studio のバージョンなど)を書いてください。
引用返信 編集キー/
■85885 / inTopicNo.3)  Re[2]: YesNoダイアログの×ボタンの有効無効
□投稿者/ ぶなっぷ (146回)-(2017/11/30(Thu) 11:39:40)
まず、キャンセルというのは、
YESでもNOでもない、YES/NOの選択自体を拒否し、
現状維持することです。

で、×ボタンはどうですか?
同じ機能じゃないですか?

同じ機能なら、キャンセルが不要なら、×ボタンも不要、
そんな感じだと思ってます。

引用返信 編集キー/
■85886 / inTopicNo.4)  Re[2]: YesNoダイアログの×ボタンの有効無効
□投稿者/ 774RR (575回)-(2017/11/30(Thu) 11:47:13)
WinForms Application であるものとして

ダイアログメッセージボックスの右上×ボタンは Windows の標準 UI 仕様上「キャンセル」扱いだから。

MessageBox.Show() を呼ぶ側、つまり、オイラたち末端開発者の意思表明として
- YesNoCancel を指定する= Cancel が返却されて良い
- YesNo を指定する= Cancel が返却されて欲しくない
と Microsoft が解釈している、のだろう。なので Cancel を返却しないよう .NET Framework 側で
わざわざ×ボタンを無効にしているものと推測。

×ボタンが効いて欲しいのなら YesNoCancel にするのが正しい態度だと思う。

素朴に YesNo のときに×ボタンを押したら何が返ってきて欲しいの?と疑問に思う。
引用返信 編集キー/
■85888 / inTopicNo.5)  Re[3]: YesNoダイアログの×ボタンの有効無効
□投稿者/ WebSurfer (1381回)-(2017/11/30(Thu) 11:54:18)
No85886 (774RR さん) に返信
> WinForms Application であるものとして
>
> ダイアログメッセージボックスの右上×ボタンは Windows の標準 UI 仕様上「キャンセル」扱いだから。

検証したわけではなくググって調べただけですが、OK ボタンのみの時は X は OK の意味だという
記事がありました。

messsagebox yesno x button をキーワードにググってみてください。
引用返信 編集キー/
■85890 / inTopicNo.6)  Re[1]: YesNoダイアログの×ボタンの有効無効
□投稿者/ furu (140回)-(2017/11/30(Thu) 12:17:19)
No85883 (maxi さん) に返信

×ボタンクリックしてみました。

  MessageBoxButtons.OK → DialogResult.OK
  MessageBoxButtons.OKCancel → DialogResult.Cancel
  MessageBoxButtons.YesNo → クリックできない
  MessageBoxButtons.YesNoCancel → DialogResult.Cancel
  MessageBoxButtons.AbortRetryIgnore→ クリックできない

×ボタンのルールは
  表示ボタンが1個なら、そのボタンと同じ
  表示ボタンが複数で
    Cancelボタンがあれば、Cancel
    Cancelボタンがなければ、×ボタンはクリックできない
かな
    

引用返信 編集キー/
■85900 / inTopicNo.7)  Re[2]: YesNoダイアログの×ボタンの有効無効
□投稿者/ エラー仮面 (1回)-(2017/11/30(Thu) 14:39:09)
「本当によろしいですか?」というメッセージであれば、
「はい」「いいえ」の選択肢にこだわらず、
「OK」「キャンセル」の選択肢でもいいのでは?
それであれば、×ボタンは使えますよ。
引用返信 編集キー/
■85932 / inTopicNo.8)  Re[3]: YesNoダイアログの×ボタンの有効無効
□投稿者/ maxi (5回)-(2017/12/04(Mon) 10:04:43)
返信の仕方がわかりませんのでここでお礼を言います。みなさんありがとうございました。
OK/Cancelで検討してみます
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ