如何以通用方式启用/禁用剪切/复制/粘贴菜单和工具栏项?

2023-11-23

我有一个 Windows 窗体应用程序,其中包含文本框、组合框、datagridview 等控件。 这些控件允许用户使用剪贴板,即剪切/复制和粘贴文本。还可以删除文本(与剪贴板无关)。

我的应用程序有一个菜单栏,其中包含一个包含剪切/复制/粘贴/删除项目的编辑项目,以及一个包含这些项目的工具栏。如何根据具有焦点的控件的状态正确启用/禁用这些项目?

我正在寻找一种通用的方法,即我寻找一个我做过一次的实现,并且可以在将来独立于我的应用程序将使用的控件而重用。


没有用于从 Windows 窗体控件获取剪切/复制/粘贴信息的通用接口或方法集。

我建议最好的方法是为每种类型的控件创建一个包装类。然后,当您想要更新菜单状态时,您将获得具有焦点的当前控件并为其创建适当的包装器。然后你向包装器询问你需要的状态信息。这样,您只需为您使用的每种类型的控件创建一个包装器实现。一开始有点痛苦,但其他时候你只需要添加你遇到的新控件。

剪贴板信息要容易得多,因为您可以询问剪贴板单例里面是否有数据以及数据是什么类型。然后,您仍然需要询问目标控件是否可以接受该类型的信息,因此仍然需要做额外的工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以通用方式启用/禁用剪切/复制/粘贴菜单和工具栏项? 的相关文章

  • 获取光标相对于控件的位置 - C#

    我想获取鼠标相对于鼠标指针所在控件的位置 这意味着当我将光标置于控件的起点 左上角 时 它应该给出 0 0 我正在使用以下代码 private void panel1 MouseMove object sender MouseEventAr
  • C# 列表框 ObservableCollection

    我正在尝试使用 ListBox DataSource ObservableCollection 但是我不知道如何在 OC 更新时让列表框自动更新 我可以在 OC 上挂接 CollectionChanged 事件 但是我需要对列表框执行什么操
  • 如何使WPF TreeView风格成为WinForms TreeView?

    WPF 默认的 TreeView 非常好 我仍然希望它有连接每个子元素的线 就像 Windows 窗体 TreeView 一样 我在网上搜索了一些例子 但设计得不够好 我怎样才能用WPF实现它 让我回答我自己的问题 Code 您需要做的只是
  • Windows 窗体和 XNA - 绘制不是实时的

    我目前正在为 XNA 开发一个关卡编辑器 它是通过结合 Windows 窗体和 XNA 构建的 我正在使用 App Hub 上示例中的内容链接文本 http create msdn com en US education catalog s
  • 文本框焦点检查

    我有一个 win 应用程序表单 其中包含 3 个文本框和按钮作为拨号盘 它是一个触摸屏应用程序 当按下拨号盘按钮时 我想检查这 3 个文本框中哪一个具有焦点 并向其附加文本 就像是 if tbx1 Focused true tbx1 Tex
  • 如何删除气球工具提示上的“扳手”按钮? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 工具提示出现在表单/窗口后面! (C#/VS 2008)

    由于某些奇怪的原因 我在 VS 2008 C winforms 应用程序中的工具提示显示在表单后面 这非常令人沮丧 我不知道我应该做什么 有人遇到过这个吗 有想法吗 PS 我正在表单中以编程方式执行 toolstip show 您可能需要检
  • 表单.位置不起作用

    我之前问过这个问题 以为我已经解决了 但它仍然不起作用 Form Show 稍微移动表单位置 https stackoverflow com questions 1214014 form show moves form position s
  • 检测用户是否正在滚动 dataGridView 滚动条

    我正在更新一个dataGridView与一个新的数据表使用 dataGridView1 DataSource table 但是 我不想在用户滚动 dataGridView 时执行此操作 如何检查滚动条是否正在滚动或已完成滚动 即拖动而不是单
  • 如何从一个窗口窗体中访问其他窗体中的控件

    先生 我有两个窗口窗体 每个窗体都有一些控件 我想从一种表单访问另一种表单的控制权 我尝试过两种方法 1 公开控件并访问它们 2 根据需要进行公共属性的获取和设置控制 但在这两种情况下 我都必须创建第一种形式的对象才能访问属性或公共控件 我
  • 在.NET windows窗体中向TableLayoutPanel添加动态控件

    我想在单击按钮时动态地将控件添加到面板 但我想整理一下位置 例如 我想要两个并排的文本框宽度相等 占用面板的相等空间 见下图 正如您在上图中看到的 单击按钮时 将添加控件 但我在使用 TableLayoutPanel 时遇到问题 请参阅下面
  • 暴露底层控制的事件

    我在自定义控件中有一个组合框 如何向实现自定义控件的任何人 事物公开其中的特定事件 例如 SelectedIndexChanged 或 KeyPress 等 您可以像这样转发事件 public event EventHandler Sele
  • .NET Winform 键盘控件

    有没有winform键盘控件 我正在寻找一个可以拖放的控件 这是针对具有触摸屏功能的仓库应用程序 如餐厅应用程序中的应用程序 这是一篇 CodeProject 文章 详细介绍了如何创建触摸屏键盘 触摸屏键盘 http www codepro
  • 关闭表单后进程未关闭

    我有第一种形式 它调用另一种形式 然后消失 frm visible false 该表单在被调用一次后不应返回 但它是主表单 启动程序时出现的第一个表单 我试图做到这一点 以便当您关闭第二个表单时 两个表单都会关闭 我已经尝试了多种方法 但所
  • 动态显示数百张图像

    我必须创建一个能够显示电影院大厅 不知道确切的词 模式的表单 本质上 我必须显示大量 由另一个来源提供 独立的椅子状图像 这些图像可以在单击时改变颜色 状态 我上网寻找解决方案 但我真的不知道如何管理这个问题 有人能帮我吗 如果您需要绘制那
  • 跨线程操作在BackgroundWorker中无效

    我想在数据网格视图中显示有关表单加载的一些数据 我想要显示的数据有大量行 当我使用后台工作处理器时 它向我显示以下错误 My code private void backgroundWorker1 DoWork object sender
  • 按比例调整图片框的大小以调整表单大小

    我希望每次 用户调整表单的大小 图片框中的图像也使用相同的值 按比例 调整大小 我在互联网上搜索了一些代码并在中找到了这个答案堆栈溢出 https stackoverflow com a 6501997 3264464 https stac
  • 如何在非托管 ATL GUI 中嵌入 Windows 窗体?

    我有一个使 COM 可见的 Windows 窗体用户控件 现在我想将该控件嵌入到 ATL 对话框 GUI 中 ATL项目 非托管C 只应获取winform的progID并在运行时动态创建和嵌入它 这可能吗 如果可以 我该怎么做 我不确定 A
  • 当我使用 Image.FromFile() 时 FileNotFound

    我在这种情况下使用 Image FromFile string 方法 using System using System Collections Generic using System ComponentModel using Syste
  • 如何获取 TextRenderer 使用的确切文本边距

    System Windows Forms TextRenderer DrawText方法根据 的值呈现带或不带左右填充的格式化文本flags范围 TextFormatFlags NoPadding 将文本紧密地装入边界框 TextForma

随机推荐