Hey I'll make it simple. I want to make a MessageBox of this string "abc" and it will be read from right to left.
I tried this Messagebox.Show("abc",MessageBoxOptions.RtlReading);
what's worng with this ?
this is the error i get :
1:"cannot convert from 'System.Windows.Forms.MessageBoxOptions' to 'string"
2:"cannot convert from 'string' to 'System.Windows.Forms.MessageBoxButtons'"
3:"The best overloaded method match for 'System.Windows.Forms.MessageBox.Show(string, string)' has some invalid arguments"
DialogResult is an enumeration of the possible return values of a dialog box including a MessageBox. The Show method returns a DialogResult that tells us what button a user has clicked on the message box.
The first parameter msg is the string displayed in the dialog box as the message. The second and third parameters are optional and respectively designate the type of buttons and the title displayed in the dialog box. MsgBox Function returns a value indicating which button the user has chosen.
MessageBox with Default Button By default, the first button is the default button. The MessageBoxDefaultButton enumeration is used for this purpose and it has the following three values. The following code snippet creates a MessageBox with a title, buttons, and an icon and sets the second button as a default button.
To display a message box, call the static method MessageBox. Show. The title, message, buttons, and icons displayed in the message box are determined by parameters that you pass to this method.
If it's not displaying left to right, try this:
//note the capitalized B in Box
MessageBox.Show(new string("abc".Reverse()), "", MessageBoxButtons.OK, MessageBoxIcons.None, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
If you want something like this:
----------------------------X-- ------------------------------- | | | | | cba | | | | |OK| | -------------------------------
I think it doesn't have to do with that though, it's mainly you got the parameters wrong. wrong. Here, fixed:
//note the capitalized B in Box
MessageBox.Show("abc", "", MessageBoxButtons.OK, MessageBoxIcons.None, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading);
There's also an ugly way to do this, but it means you don't have to add the extraparams. First, make a class called MessageBoxEx, and the contents of it are...
static class MessageBoxEx
{
public static void Show(string content, MessageBoxOptions options)
{
MessageBox.Show(content, "", MessageBoxButtons.OK, MessageBoxIcons.None, MessageBoxDefaultButton.Button1, options);
}
}
and call it like MessageBoxEx.Show("abc", MessageBoxOptions.RtlReading);
.
Write a method that will default all the values you don't want to set.
//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);
}
Then all you have to do is call
ShowMessageBox("abc", MessageBoxOptions.RtlReading)
I have been in situation like this, and the best way I found is to combine the two flags: RtlReading
and RightAlign
:
MessageBox.Show("Msg body", "Msg title", MessageBoxButton.OK, MessageBoxImage.Warning,
MessageBoxResult.OK, MessageBoxOptions.RtlReading | MessageBoxOptions.RightAlign);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With