次のようなMessageBox
を作成したいと思います Yes/No ボタンとチェックボックス。
このアプリケーションは画像リサイザーであり、一度に複数の画像のサイズを変更します。その過程で、新しい場所のファイル名が存在するかどうかをチェックし、それを上書きするオプションを付けます。
MessageBox
は、必要に応じて新しいファイルを上書きするオプションをユーザーに提供し、チェックボックスはクリックする必要をなくします Yesxすべてのファイルを上書きする場合の回数。
MessageBox
ダイアログにチェックボックスを追加するにはどうすればよいですか?
メッセージボックスにチェックボックスを追加することはできません。 Timとrsbarroが示唆しているように、カスタムダイアログを作成する必要があります。ティムの答えはうまく機能し、新しいクラスを作成する必要はありません。ただし、デザイナーでフォームをデザインしたい場合は、これを試すことができます。
DialogResult
プロパティを設定します Yes [はい]へのボタン、および No これにより、ユーザーがクリックしたボタンを見つけることができます。public bool DoForAll
{
get { return checkBox.Checked; }
}
var options = new Options();
var result = options.ShowDialog();
if (result == DialogResult.Yes)
{
var doForAll = options.DoForAll;
}
カスタムダイアログを作成します。これがあなたにアイデアを与えることができる何かです:
public static class CheckboxDialog
{
public static bool ShowDialog(string text, string caption)
{
Form Prompt = new Form();
Prompt.Width = 180;
Prompt.Height = 100;
Prompt.Text = caption;
FlowLayoutPanel panel = new FlowLayoutPanel();
CheckBox chk = new CheckBox();
chk.Text = text;
Button ok = new Button() { Text = "Yes" };
ok.Click += (sender, e) => { Prompt.Close(); };
Button no = new Button() { Text = "No" };
no.Click += (sender, e) => { Prompt.Close(); };
panel.Controls.Add(chk);
panel.SetFlowBreak(chk, true);
panel.Controls.Add(ok);
panel.Controls.Add(no);
Prompt.Controls.Add(panel);
Prompt.ShowDialog();
return chk.Checked;
}
}
次のように使用できます。
bool overwrite = CheckboxDialog.ShowDialog("overwrite", "Overwrite location?");