例外“bool?不包含ok的定义”

时间:2017-04-20 15:56:25

标签: c# xaml

我正在设计一个应用程序,我正在尝试从文件中放入字符串并尝试将其放入我的richtextbox

enter image description here

但他们是一个问题,那就是

xaml文件代码

<Menu Header="File">
<MenuItem Header="_Open..." Name="open" InputGestureText="Ctrl+O" Click="open_click">
                    <MenuItem.Icon>


                        <Image Source="open-icon.png" Width="25" Height="25"></Image>
                    </MenuItem.Icon>
                </MenuItem>
</Menu>
<RichTextBox x:Name="richTextBox" Height="290" Width="508" AcceptsReturn="True" AcceptsTab="True">
        <FlowDocument>
            <Paragraph>
                <Run Name="test" Text=""/>
            </Paragraph>
        </FlowDocument>
    </RichTextBox>

cs文件代码

private void open_click(object sender, RoutedEventArgs e)
    {
        Microsoft.Win32.OpenFileDialog o = new Microsoft.Win32.OpenFileDialog();
        RichTextBox richtextbox = new RichTextBox();
        o.InitialDirectory = "c:\\";
        o.Filter = "Text Files|*.txt";//working method//    Filter = "Text files (*.txt)|*.txt|All Files (*.*)|*.*";
        o.RestoreDirectory = true;
        if (o.ShowDialog() == DialogResult.ok)
            richtextbox1.LoadFile(o.FileName,FrameworkRichTextComposition.PlainText);
    }

错误出现在if行语句和下划线对象是“DialogResult.OK” 表示“DialogResult.OK”是下划线 和loadFile也是下划线

我认为我在xaml文件中遗漏了某些内容,或者我在代码中遗漏了其他内容

第二张错误图片

在这里 enter image description here

1 个答案:

答案 0 :(得分:1)

Window.ShowDialog()返回bool?。您尝试与之比较的DialogResult是父窗口的属性,您不应该与它进行比较。我认为您可能会将MessageBoxResultMessageBox.Show()混淆,后者由MessageBoxResult.OK返回。 ShowDialog()是一件事,但这是另一回事。

以下是if (o.ShowDialog().GetValueOrDefault()) richtextbox1.LoadFile(o.FileName,FrameworkRichTextComposition.PlainText); 的所需内容:

if ((bool)o.ShowDialog())
    richtextbox1.LoadFile(o.FileName,FrameworkRichTextComposition.PlainText);

或者这个:

LoadFile

更新

第二个问题是WPF RichTextBox控件没有hold on方法,与winforms版本不同。 This answer illustrates how to load a rich text file into a WPF RichTextBox