3

我正在用WPF(c#) 编写程序。我住在伊朗,所以我的语言是波斯语(right to left)。我想MessageBox使用更多按钮或其他控件进行自定义。

我使用一个简单Window的来显示消息。在 C# 中,当 MessageBox 显示时,用户无法单击其他窗口或对其他窗口执行任何操作。我怎么能simulate这样,在我的窗口?

在以前,我使用了 WPFCustomeMessageBox 库。请不要把它交给我。

4

3 回答 3

3

用于.ShowDialog()显示模式对话框:

MyMsgBox.ShowDialog()

这将停止执行,直到消息框关闭。请参阅MSDN 文档

于 2013-08-16T10:04:48.127 回答
1

使用 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">
于 2013-08-16T10:09:57.937 回答
1

编辑:似乎我没有仔细阅读问题,并认为问题在于无法在 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)

于 2013-08-16T11:20:16.623 回答