Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MessageBox.从右向左显示读数不工作_C#_Winforms_Messagebox - Fatal编程技术网

C# MessageBox.从右向左显示读数不工作

C# MessageBox.从右向左显示读数不工作,c#,winforms,messagebox,C#,Winforms,Messagebox,嘿,我会让事情变得简单的。我想用这个字符串“abc”制作一个MessageBox,它将从右向左读取 我尝试了这个Messagebox.Show(“abc”,MessageBoxOptions.RtlReading) 这是怎么回事 这是我得到的错误: 1:“无法从'System.Windows.Forms.MessageBoxOptions'转换为'string' 2:“无法从“字符串”转换为 “System.Windows.Forms.MessageBoxButtons” 3:“与'System

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

我尝试了这个
Messagebox.Show(“abc”,MessageBoxOptions.RtlReading)

这是怎么回事

这是我得到的错误:

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

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

3:“与'System.Windows.Forms.MessageBox.Show(字符串、, 字符串“”具有一些无效参数”


如果没有从左到右显示,请尝试以下操作:

//note the capitalized B in Box
MessageBox.Show(new string("abc".Reverse()), "", MessageBoxButtons.OK, MessageBoxIcons.None, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
如果你想要这样的东西:

----------------------------X-- ------------------------------- | | | | | cba | | | | |OK| | ------------------------------- 也有一种丑陋的方法可以做到这一点,但这意味着您不必添加额外的参数。首先,创建一个名为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)

您使用的代码具有匹配的签名
MessageBox.Show(string,string)
尝试显示标题的字符串和标题。相反,您需要的是填写了所有参数的内容:

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

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

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

我遇到过这样的情况,我发现最好的方法是将两个标志组合起来:
RtlReading
righalign

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

修复如下所示的
MessageBoxOptions

MessageBoxOptions.RightAlign | MessageBoxOptions.RtlReading
就你而言:

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

希望有帮助。

你应该告诉我们,什么是“不起作用”?还有,我从右到左想,是用单词而不是字母吗?你说的“它不工作”是什么意思?这段代码不会编译好吧,很抱歉我会告诉你错误,我不能运行程序,这(我编辑了我的帖子)我不认为这是你真正想要的答案,但从长远来看,这是对你帮助最大的答案-看看@Sayse,这很有帮助,但是如果我不想使用所有的标题和按钮,我只想从右到左写一条消息。。没有定义所有其他的东西我必须像你一样写得很好?(我的意思是如果我不想写MessageBoxButtons.OK和MessageBoxIcons.None和所有其他的,ExceptMessageBoxOptions.RTL阅读好吧,还有另一种方法…但是它很难看。我会加上它。谢谢!但我想我会用第一种方法(第二种方法就像你说的那样难看…)+1为OP提供了一种方式,让他(她)能够以他(她)想要的方式呼叫他(她)的
MessageBox
),也为住在CO;)@newStackExchangeInstance虽然很难看,但仍然很直接。不管怎样,我都不宽恕这种方法。OP应该使用
MessageBox
类的正常重载,您的答案也是正确的。
MessageBox.Show("abc", "", MessageBoxButtons.OK, MessageBoxIcons.None,
MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign | MessageBoxOptions.RtlReading);