【问题标题】:C#: WinForm Container Focus EventC#:WinForm 容器焦点事件
【发布时间】:2017-08-17 21:37:38
【问题描述】:

我正在制作一个 Windows 窗体,如下所示。当我点击DataGridView中的一行时,一个人的详细信息会传输到旁边的TextBoxes。当用户点击Edit按钮时,整个Panel右侧变为可编辑; TextBoxes 和CheckBoxes 是Enabled 并允许用户编辑一个人的姓名、生日等。之后,更改将保存到数据库中。 我不希望用户在编辑时单击不同的行,因此想检测用户何时离开Panel,以便我可以提示他/她。

如何检测我是否失去了Panel 的焦点? 如果我要解决这个问题,请改为使用适当的答案。

【问题讨论】:

  • 似乎您正在尝试制作应该是模式对话框并将其展平到主窗体中。您可能应该重新考虑您的 gui 界面。
  • 什么是模态对话框,如何制作?
  • “模态对话框”谷歌搜索得很好。
  • 哦,我是为其他接口做的。为此,我选择了 Panel,因为它还具有查看目的。并非面板中的所有数据都可以在 DGV 中看到。

标签: c# winforms events controls focus


【解决方案1】:

也许当用户开始在Panel 中编辑记录时,您可以将DataGridView 的Enabled 属性设置为False,当按下Save 按钮时,您可以将Enabled 属性设置为再次True。

【讨论】:

  • 我决定不这样做,因为如果我想在将来添加更多处理 DGV 的控件,那么我也必须一个一个地处理它们。一个例子是过滤器。即使 DGV 被禁用,我仍然可以过滤它。
  • @DonovanKeating 相反,如果用户尚未保存在面板中,您可以在 DataGridView MouseEnter 事件中禁用 DataGridView。然后,您可以在 MouseLeave 事件中重新启用,或者如果面板已保存。
  • 这不正是你的帖子所暗示的吗?
猜你喜欢
  • 1970-01-01
  • 2011-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-22
相关资源
最近更新 更多