C# MessageBox.从右向左显示读数不工作
嘿,我会让事情变得简单的。我想用这个字符串“abc”制作一个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
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);