【问题标题】:How to create a Word Wrap MenuItem如何创建自动换行菜单项
【发布时间】:2013-11-03 14:31:36
【问题描述】:

我是 DOT NET 的新手

我正在使用 C# 构建一个 WPF 应用程序,其中我有一个 MenuItem(可检查)用于切换 TextBox 的自动换行功能(就像在记事本中一样)即在TextWrapping="Wrap"TextWrapping="NoWrap"之间切换

菜单项

<MenuItem Header="_Word Wrap" Name="wordWrap" IsCheckable="True" IsChecked="True" Checked="wrap_Click"/>

文本框

<TextBox TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Visible" Name="txtContent">

如何创建一个函数,以便在选中 MenuItem 时打开自动换行功能,当取消选中 MenuItem 时关闭自动换行功能

我尝试了以下代码,

private void wrap_Click(object sender, RoutedEventArgs e)
        {
            if (wordWrap.IsChecked)
                txtContent.TextWrapping = TextWrapping.Wrap;
            else
                txtContent.TextWrapping = TextWrapping.NoWrap;
        }

但它在txtContent.TextWrapping = TextWrapping.Wrap; 处显示异常:

Object reference not set to an instance of an object.

请帮帮我

谢谢!

【问题讨论】:

  • 您认为“未设置对象引用”是什么意思?
  • 这是一个 NullReferenceException @lboshuizen
  • 哪一行抛出异常?
  • txtContent.TextWrapping = TextWrapping.Wrap;@wdosanjos
  • 您是在代码中的某处直接调用wrap_Click 方法吗?

标签: c# .net wpf word-wrap


【解决方案1】:

您的实际活动似乎没有问题。只需尝试将您的事件更改为点击事件即可。

所以,改变这个:

<MenuItem Header="_Word Wrap" Name="wordWrap" IsCheckable="True" IsChecked="True" Checked="wrap_Click" />

到这里:

<MenuItem Header="_Word Wrap" Name="wordWrap" IsCheckable="True" IsChecked="True" Click="wrap_Click" />

这解决了我的问题。您甚至不必更改事件代码。它是正确的。出于某种原因,编译器只是不喜欢将其作为检查事件...

【讨论】:

  • 非常感谢,它成功了!...但是为什么checked 事件没有成功? @SuperPrograman
  • @AdityaVikas 这与之前检查过菜单项有关。例如,如果您将事件保留为Checked 事件,但将IsChecked 属性更改为false,则程序可以正常工作。只是已经检查过了……我自己也不确定。
猜你喜欢
  • 2013-03-12
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
  • 2016-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多