MessageBox.Show从右到左阅读不起作用

时间:2013-06-07 21:53:36

标签: c# winforms messagebox

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

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

这有什么意义?

这是我得到的错误:

  

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

     
    

2:“无法从'string'转换为     'System.Windows.Forms.MessageBoxButtons'“

         
      

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

    
  

5 个答案:

答案 0 :(得分:12)

如果它没有从左向右显示,请尝试:

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

如果你想要这样的东西:

----------------------------X--
-------------------------------
|                             |
|                             |
|                        cba  |
|                             |
|                        |OK| |
-------------------------------

我认为它与此无关,但主要是你的参数错误。错误。在这里,修复:

//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);

答案 1 :(得分:3)

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

//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)

答案 2 :(得分:2)

我遇到过这样的情况,我找到的最好的方法是将两个标志结合起来:RtlReadingRightAlign

MessageBox.Show("Msg body", "Msg title", MessageBoxButton.OK, MessageBoxImage.Warning, 
         MessageBoxResult.OK, MessageBoxOptions.RtlReading | MessageBoxOptions.RightAlign);

答案 3 :(得分:1)

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

MessageBox.Show("abc def","",MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading);

答案 4 :(得分:0)

按如下所示修复MessageBoxOptions

MessageBoxOptions.RightAlign | MessageBoxOptions.RtlReading

根据您的情况:

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

希望有帮助。