C#中的自定义确认对话框

时间:2017-12-17 05:48:12

标签: c# winforms

我是C#Development的新手。我有一个与Windows窗体相关的问题,我需要显示自定义确认对话框。无法在C#中使用传统的消息框。此外,必须有两个字符串值传入自定义确认对话框。

到目前为止,我设法通过forms()创建一个基本的实例确认对话框。 以下是代码:

Form prompt = new Form()
{
    Width = 500,
    Height = 150,
    FormBorderStyle = FormBorderStyle.FixedDialog,
    Text = caption,
    StartPosition = FormStartPosition.CenterScreen,

};

我不知道在此之后该怎么办。请帮忙。

2 个答案:

答案 0 :(得分:4)

好吧,不要只创建一个Form的实例,除非你在运行时以编程方式添加所有控件,否则这对你没什么帮助。

您要做的是向您的应用程序添加一个表单,该表单将充当您的对话框。在此表单中,您将在设计时添加要在其上显示的任何控件,还可以设置所有其他设计元素,如高度和宽度,起始位置和表单边框(您可能希望在代码中更改的标题,但是不应该阻止你设置默认标题)。然后,当您需要显示对话框时,只需创建该表单的实例,传递您需要的任何内容(通常,它将是一个向用户显示的字符串,也可能是另一个参数来控制您想要显示的按钮等) 。

在显示对话框表单时,请务必使用ShowDialog显示此表单,并在对话框表单中设置所需的任何按钮,将表单的DialogResult属性设置为您需要的任何值({{1} },OkCancelYes等')。

这是一个非常基本的例子:

对于具有yes和no按钮的对话框,带有可自定义的标题和文本:

Custom dialog

有一个名为No的标签,按钮名为messageyes。 注意:表单的no属性设置为StartPosition

这是表单的代码:

CenterParent

要以其他形式使用它,而不是public partial class CustomDialog : Form { // This static method is the equivalent of MessageBox.Show public static DialogResult ShowDialog(IWin32Window owner, string caption, string text) { // Setting the DialogResult does not close the form, it just hides it. // This is why I'm disposing it. see the link at the end of my answer for details. using(var customDialog = new CustomDialog(caption, text)) { return customDialog.ShowDialog(owner); } } // private constructor so you don't accidentally create an instance of this form private CustomDialog(string caption, string text) { InitializeComponent(); this.Text = caption; this.message.Text = text; } // Handle the click event of the `yes` button private void yes_Click(object sender, EventArgs e) { // This will automatically close the form this.DialogResult = DialogResult.Yes; } // Handle the click event of the `no` button private void no_Click(object sender, EventArgs e) { this.DialogResult = DialogResult.No; } } ,请执行以下操作:

MessageBox.Show

现在结果包含以下内容之一:

  • DialogResult.Yes - 用户点击了“是”按钮
  • DialogResult.No - 用户点击了no按钮
  • DialogResult.Cancel - 用户关闭窗口(单击窗口边框上的x) - 注意我没有为此编写任何代码 - 这是值{{3}当表单显示为对话框时。

答案 1 :(得分:0)

到目前为止,你已经在某种程度上做到了。现在你有了提示的表单对象。你只需要为它添加值。在你的情况下,你有两个字符串。

 public static bool ShowConfirmDialog(string text, string caption)
    {
        Form prompt = new Form()
        {
            Width = 500,
            Height = 150,
            FormBorderStyle = FormBorderStyle.FixedDialog,
            Text = caption,
            StartPosition = FormStartPosition.CenterScreen,

        };
        Label textLabel = new Label() { Left = 50, Top = 20, Text = text };
        TextBox textBox = new TextBox() { Left = 50, Top = 50, Width = 400 };
        Button confirmation = new Button() { Text = "OK", Left = 350, Width = 100, Top = 70, DialogResult = DialogResult.OK };
        confirmation.Click += (sender, e) => { prompt.Close(); };
       // prompt.Controls.Add(textBox);
        prompt.Controls.Add(confirmation);
        prompt.Controls.Add(textLabel);
        prompt.AcceptButton = confirmation;

        return prompt.ShowDialog() == DialogResult.OK;

    }