4

標準ウィンドウのYES/NOまたはYES/NO /CANCELMessageBoxの適切な代替品を探しています。

これらの標準ダイアログが、「プレーンテキストで保存するにはYESと答える、またはhtmlで保存するにはNOと答える」などの方法で誤用されるのをよく見かけます。明らかに、テキストは「名前を付けて保存:」と読み替え、「ボタンには「テキスト」と「HTML」のラベルを付ける必要があります。質問されているのはイエス/ノーの質問ではなく、そのように表現することはできますが、読みやすく理解しやすいものではありません。

Microsoftは、ボタンのテキストを変更する方法を提供していません。上記の厄介なスタイルを使用するアプリケーションの数からも明らかなように、最初から代替品を作成するための迅速で簡単な方法はありません。

少なくとも次のことを可能にする無料のC#置換ダイアログまたはMessageBoxはありますか?
-ボタンの数を指定します-
各ボタンに表示するテキストを指定します


- 私が見たが見つけられなかっ たデフォルトのボタンを指定します。

(私は自分で作成しますが、小さなサブセットしか必要としない/使用する/知っているだけなので、完全に機能するコントロールが持つべきすべての動作に精通していません。使用しない2つの例:テーマと国際化。I同僚も使いたいものが必要です。)

4

4 に答える 4

6

CodeProjectのメッセージボックスの分析をご覧ください。プロジェクトは少し古いですが、それはあなたが探しているものとほぼ同じであり、それを更新するのにそれほど時間はかからないはずです。

于 2009-10-09T20:26:03.367 に答える
3

ターゲットプラットフォームによっては、タスクダイアログがこれを行うための良い方法である場合があります。Windows APIコードパックには、タスクダイアログ用の.NETラッパーがあります。ただし、これらはWindows Vista以降でのみ提供され、XPまたは2003では提供されません。

于 2009-10-09T20:33:47.780 に答える
2

率直に言って、そのようなメッセージボックスを自分で作成することはそれほど難しくありません。私たちが開発している現在のアプリでは、そのようなことが機能しています。

必要なのは、作成したボタンを自動整列するボタンのFlowLayoutです。APIには、(params Tuple <string、DialogResult> []ボタン)のようなものがあります。

タプルは、2つの値を含むヘルパークラスです。文字列はボタンのテキストであり、Dialogresultは、そのテキストを含むボタンがクリックされたときにメッセージボックスが返すものです。

于 2009-10-09T20:33:59.980 に答える
2

フランクに同意します。これを処理する独自の汎用フォームを作成することはそれほど難しくありません。コードに入らずに、フォームは次のことを行う必要があります

1)ユーザーに表示するメッセージを設定するプロパティがあります。

2)ボタンを追加するためのメソッドを用意します。1つはボタンテキスト用、もう1つはダイアログ結果用の2つの引数を使用します。

3)フォームが表示されたら、モーダルダイアログモードにして、オプションの1つがクリックされるまでアプリケーションの残りの部分が非アクティブになるようにする必要があります。

したがって、[名前を付けて保存] /[保存しない]/[キャンセル]を作成するには、手順2で3つのボタンを追加し、すべて適切なボタンのテキストとダイアログの結果を表示します。

フローレイアウトを使用すると、メッセージのサイズやボタンの数に関係なく、正しく表示されるようになります。

于 2009-10-09T20:41:09.607 に答える