C# 无法从';字符串';至';System.Windows.Forms.MessageBox图标
我正在开发一款软件,可以让您生成自己定制的C# 无法从';字符串';至';System.Windows.Forms.MessageBox图标,c#,string,messagebox,C#,String,Messagebox,我正在开发一款软件,可以让您生成自己定制的Messagebox。在我尝试输入MessageBox按钮和MessageBox图标之前,我的代码没有错误。然后,我得到一个错误 2参数3:无法从“字符串”转换为“System.Windows.Forms.MessageBoxButtons”,错误3参数4:无法从“字符串”转换为“System.Windows.Forms.MessageBoxIcon”。这里的问题是什么 第3个和第4个参数不需要字符串值。您应该传递类型为MessageBoxButton和
Messagebox
。在我尝试输入MessageBox按钮和MessageBox图标之前,我的代码没有错误。然后,我得到一个错误
2参数3:无法从“字符串”转换为“System.Windows.Forms.MessageBoxButtons”,错误3参数4:无法从“字符串”转换为“System.Windows.Forms.MessageBoxIcon”。这里的问题是什么
第3个和第4个参数不需要字符串值。您应该传递类型为MessageBoxButton
和MessageBoxIcon
因此,您可以在if-else条件中指定所需的类型,而不是指定字符串值
MessageBoxButton previewbutton;
MessageBoxIcon previewtype;
if (radioButton1.Checked == true)
previewtype = MessageBoxIcon.Error;
这个问题是当你说
MessageBox.Show(textBoxX1.Text, richTextBoxEx1.Text, previewbutton, previewtype);
您正在将名为previewButton
和previewtype
的两个字符串作为参数传递给MessageBox。当系统需要在其位置键入MessageBoxButtons
和MessageBoxIcon
时,显示方法
正在使用的forMessageBox.Show
方法如下
MessageBox.Show(String, String, MessageBoxButtons, MessageBoxIcon)
但是您正在传递两个字符串-因此出现了错误。错误是因为您正在将字符串传递到MessageBox.Show(),您应该在其中传递MessageBoxButtons和MessageBoxIcon。换句话说,您不能这样做:
MessageBox.Show("Some text", "a caption", "MessageBoxButtons.AbortRetryIgnore", "MessageBoxIcon.Error");
但你可以这样做:
MessageBox.Show("Some text", "a caption", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error);
previewtype和previewbutton变量应定义为实际类型,而不是字符串:
MessageBoxIcon previewtype;
MessageBoxButtons previewbutton;
如果我们更新您的示例以使用正确的数据类型,则如下所示:
if (textBoxX1.Text == String.Empty)
MessageBox.Show("You must enter a title.");
else if (richTextBoxEx1.Text == String.Empty)
MessageBox.Show("You must enter a body.");
else
{
MessageBoxIcon previewtype;
MessageBoxButtons previewbutton;
if (radioButton1.Checked == true)
previewtype = MessageBoxIcon.Error;
else if (radioButton2.Checked == true)
previewtype = MessageBoxIcon.Information;
else if (radioButton3.Checked == true)
previewtype = MessageBoxIcon.Exclamation;
else if (radioButton4.Checked == true)
previewtype = MessageBoxIcon.Question;
if (radioButton8.Checked == true)
previewbutton = MessageBoxButtons.AbortRetryIgnore;
else if (radioButton7.Checked == true)
previewbutton = MessageBoxButtons.OK;
else if (radioButton6.Checked == true)
previewbutton = MessageBoxButtons.OKCancel;
else if (radioButton5.Checked == true)
previewbutton = MessageBoxButtons.RetryCancel;
else if (radioButton9.Checked == true)
previewbutton = MessageBoxButtons.YesNo;
else if (radioButton10.Checked == true)
previewbutton = MessageBoxButtons.YesNoCancel;
MessageBox.Show(textBoxX1.Text, richTextBoxEx1.Text, previewbutton, previewtype);
但是用户应该选择图标和按钮。所以我可以做一些类似“MessageBoxIcon previewtype=MessageBoxIcon.惊叹号”的事情?没错。我刚刚更新了答案,以显示更正后的代码是什么样子的。您通常只需删除所有引号即可。:)谢谢,这正是我需要的!
MessageBoxIcon previewtype;
MessageBoxButtons previewbutton;
if (textBoxX1.Text == String.Empty)
MessageBox.Show("You must enter a title.");
else if (richTextBoxEx1.Text == String.Empty)
MessageBox.Show("You must enter a body.");
else
{
MessageBoxIcon previewtype;
MessageBoxButtons previewbutton;
if (radioButton1.Checked == true)
previewtype = MessageBoxIcon.Error;
else if (radioButton2.Checked == true)
previewtype = MessageBoxIcon.Information;
else if (radioButton3.Checked == true)
previewtype = MessageBoxIcon.Exclamation;
else if (radioButton4.Checked == true)
previewtype = MessageBoxIcon.Question;
if (radioButton8.Checked == true)
previewbutton = MessageBoxButtons.AbortRetryIgnore;
else if (radioButton7.Checked == true)
previewbutton = MessageBoxButtons.OK;
else if (radioButton6.Checked == true)
previewbutton = MessageBoxButtons.OKCancel;
else if (radioButton5.Checked == true)
previewbutton = MessageBoxButtons.RetryCancel;
else if (radioButton9.Checked == true)
previewbutton = MessageBoxButtons.YesNo;
else if (radioButton10.Checked == true)
previewbutton = MessageBoxButtons.YesNoCancel;
MessageBox.Show(textBoxX1.Text, richTextBoxEx1.Text, previewbutton, previewtype);