我正在用WPF
(c#) 编写程序。我住在伊朗,所以我的语言是波斯语(right to left
)。我想MessageBox
使用更多按钮或其他控件进行自定义。
我使用一个简单Window
的来显示消息。在 C# 中,当 MessageBox 显示时,用户无法单击其他窗口或对其他窗口执行任何操作。我怎么能simulate
这样,在我的窗口?
在以前,我使用了 WPFCustomeMessageBox 库。请不要把它交给我。
我正在用WPF
(c#) 编写程序。我住在伊朗,所以我的语言是波斯语(right to left
)。我想MessageBox
使用更多按钮或其他控件进行自定义。
我使用一个简单Window
的来显示消息。在 C# 中,当 MessageBox 显示时,用户无法单击其他窗口或对其他窗口执行任何操作。我怎么能simulate
这样,在我的窗口?
在以前,我使用了 WPFCustomeMessageBox 库。请不要把它交给我。
使用 Window.Showdialog 并且不要忘记设置 Window Parent,否则你会得到有趣的行为。
然后在 Window 类中具有预期返回的属性,这些属性由对话框的结果填充。喜欢:
public void testDialog()
{
var return = new DialogModelReturn();
mywindow.ShowDialog(new DialogModel(return));
if (return.isOk)
{
}
}
沿着这条思路的东西应该会起作用。另外:我建议将 WindowStyle 设置为无,或者至少只有一个关闭按钮,以获得“ModalDialog 感觉”。
像这样:
<Window x:Class="bla.bla"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Fortschritt" Icon="bla.png" Height="200" Width="600"
WindowStyle="None" Background="RoyalBlue">
编辑:似乎我没有仔细阅读问题,并认为问题在于无法在 MessageBoxes 中使用从右到左对齐(这可以通过 MessageBoxOptions 实现)。
该方法有一个重载MessageBox.Show()
,可让您指定MessageBoxOptions
. 其中一些选项涉及从右到左对齐。
我不知道伊朗使用的语言,因此您必须尝试使用自己的文本,但这里是如何指定选项(方法的最后一个参数):
string message = "Test message.";
string caption = "RTL Test";
MessageBoxImage image = MessageBoxImage.Information;
MessageBoxButton button = MessageBoxButton.OK;
MessageBoxResult defaultResult = MessageBoxResult.OK;
MessageBox.Show(message, caption, button, image, defaultResult, MessageBoxOptions.RightAlign);
MessageBox.Show(message, caption, button, image, defaultResult, MessageBoxOptions.RtlReading);
MessageBox.Show(message, caption, button, image, defaultResult, MessageBoxOptions.RtlReading | MessageBoxOptions.RightAlign);
这是有关选项的 MSDN 文章的链接:MessageBoxOptions Enum (Winforms)