9

嘿,我会让它变得简单。我想制作这个字符串“abc”的MessageBox,它将从右到左读取。

我试过这个 Messagebox.Show("abc",MessageBoxOptions.RtlReading);

这是怎么回事?

这是我得到的错误:

1:“无法从 'System.Windows.Forms.MessageBoxOptions' 转换为 'string”

2:“无法从‘字符串’转换为‘System.Windows.Forms.MessageBoxButtons’”

3:“'System.Windows.Forms.MessageBox.Show(string, string)' 的最佳重载方法匹配有一些无效参数”

4

5 回答 5

17

如果它没有从左到右显示,试试这个:

//note the capitalized B in Box
MessageBox.Show(new string("abc".Reverse()), "", MessageBoxButtons.OK, MessageBoxIcons.None, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);

如果你想要这样的东西:

-  -  -  -  -  -  -  -  -  -  -  -  -  - X - 
-------------------------------------------
| |
| |
| 联邦银行 |
| |
| |确定| |
-------------------------------------------

我认为这与此无关,主要是您的参数错误。错误的。在这里,固定:

//note the capitalized B in Box
MessageBox.Show("abc", "", MessageBoxButtons.OK, MessageBoxIcons.None, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading);

还有一种丑陋的方法可以做到这一点,但这意味着您不必添加额外参数。首先,创建一个名为 MessageBoxEx 的类,它的内容是...

static class MessageBoxEx
{
    public static void Show(string content, MessageBoxOptions options)
    {
        MessageBox.Show(content, "", MessageBoxButtons.OK, MessageBoxIcons.None,          MessageBoxDefaultButton.Button1, options);
    }
}

并称它为MessageBoxEx.Show("abc", MessageBoxOptions.RtlReading);.

于 2013-06-07T22:04:50.230 回答
5

编写一个方法,默认所有您不想设置的值。

//Message is the string message and options is where you specify RTL
public void ShowMessageBox(string message, MessageBoxOptions options)
{
    MessageBox.Show(message, "", MessageBoxButtons.OK, MessageBoxIcons.None, MessageBoxDefaultButton.Button1, options);
}

然后你所要做的就是打电话

ShowMessageBox("abc", MessageBoxOptions.RtlReading)
于 2013-06-07T22:20:35.860 回答
2

我一直处于这样的情况,我发现最好的方法是结合两个标志:RtlReadingRightAlign

MessageBox.Show("Msg body", "Msg title", MessageBoxButton.OK, MessageBoxImage.Warning, 
         MessageBoxResult.OK, MessageBoxOptions.RtlReading | MessageBoxOptions.RightAlign);
于 2017-09-05T06:45:23.373 回答
1

您正在使用的代码有一个匹配的签名, MessageBox.Show(string, string)它试图显示一个字符串和标题的标题。相反,您想要的是填充了所有参数的东西:

MessageBox.Show("abc def","",MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading);
于 2013-06-07T22:12:18.810 回答
0

修复MessageBoxOptions如下:

MessageBoxOptions.RightAlign | MessageBoxOptions.RtlReading

在你的情况下:

MessageBox.Show("abc", "", MessageBoxButtons.OK, MessageBoxIcons.None,
MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign | MessageBoxOptions.RtlReading);

希望能帮助到你。

于 2019-07-04T07:26:58.497 回答