我是C#Development的新手。我有一个与Windows窗体相关的问题,我需要显示自定义确认对话框。无法在C#中使用传统的消息框。此外,必须有两个字符串值传入自定义确认对话框。
到目前为止,我设法通过forms()创建一个基本的实例确认对话框。 以下是代码:
Form prompt = new Form()
{
Width = 500,
Height = 150,
FormBorderStyle = FormBorderStyle.FixedDialog,
Text = caption,
StartPosition = FormStartPosition.CenterScreen,
};
我不知道在此之后该怎么办。请帮忙。
答案 0 :(得分:4)
好吧,不要只创建一个Form
的实例,除非你在运行时以编程方式添加所有控件,否则这对你没什么帮助。
您要做的是向您的应用程序添加一个表单,该表单将充当您的对话框。在此表单中,您将在设计时添加要在其上显示的任何控件,还可以设置所有其他设计元素,如高度和宽度,起始位置和表单边框(您可能希望在代码中更改的标题,但是不应该阻止你设置默认标题)。然后,当您需要显示对话框时,只需创建该表单的实例,传递您需要的任何内容(通常,它将是一个向用户显示的字符串,也可能是另一个参数来控制您想要显示的按钮等) 。
在显示对话框表单时,请务必使用ShowDialog
显示此表单,并在对话框表单中设置所需的任何按钮,将表单的DialogResult
属性设置为您需要的任何值({{1} },Ok
,Cancel
,Yes
等')。
这是一个非常基本的例子:
对于具有yes和no按钮的对话框,带有可自定义的标题和文本:
有一个名为No
的标签,按钮名为message
和yes
。
注意:表单的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
现在结果包含以下内容之一:
答案 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;
}