【问题标题】:I need to access TabPage before removing TabControl我需要在删除 TabControl 之前访问 TabPage
【发布时间】:2013-08-22 07:37:11
【问题描述】:

在主程序中,我将 TabPage (UserControl) 添加到 TabControl。此控件在删除它之前我想拥有的数据很少。 使用 TabControl.RemoveControl 时,发件人是 TabControl,我无法访问 TabPage,因为我不知道它是哪一个(使用 TabControl.TabPages.Count 我知道我的 Tab 尚未删除,因此我可以访问它)。

TabControl 是否有任何事件来标记将要删除的 TabPage?或任何其他想法。

基本上:我添加标签页并编辑一些 MySql 数据,关闭后我想检查该行上是否有编辑(通过 bool wasEdited),如果已编辑,我想读取该行的 id .如果用于编辑的表单不在单独的文件中,我将只对其运行方法,并且我不能使用静态方法访问非静态 DataGridView 来更新行。

【问题讨论】:

  • 请出示您的代码
  • @MikroDel,我同意通常人们应该展示他们的代码,但是 OP 已经写了他尝试过的内容以及他遇到问题的地方。我怀疑代码示例在这种情况下会产生什么不同。
  • @LarsKristensen 是的,这取决于。对于大多数人来说,理解问题的最佳组合是文本 + 代码

标签: c# events tabcontrol tabpage


【解决方案1】:

在事件处理程序TabControl.ControlRemoved 中有ControlEventArgs e。被删除的控件是e.Control

【讨论】:

  • 是的,我明白了,但你是 100% 正确的,遗憾的是我在弄清楚之前没有刷新这个页面。我设法制作了这段代码: ((MY_User_Control)(((TabControl)sender).TabPages[e.Control.Name].Controls[0])).wasEdited 这样我检查我想要什么:-) 非常感谢跨度>
  • @MichałPółrolniczak,您正在使用从 e.Control 获得的实际 TabPage 的名称从 TabControl.TabPages 集合中获取 TabPage。这没有错,但有点多余。你可以这样做: ((MY_User_Control)((TabPage)e.Control).Controls[0]).wasEdited
  • @LarsKristensen,我读到在事件触发发送者是触发事件的对象,而 EventArgs (e) 只是传递数据 - 我不知道数据可能是一个对象,在这种情况下是 TabPage .您的代码有效。在这种情况下,e 实际上是一个从作为发送者的父级中删除的 OBJECT,感谢我的代码确实是多余的 :-) 感谢您让我今天学到了一些东西 :-)
  • @MichałPółrolniczak,没问题 - 乐于提供帮助 :) 我通常使用的经验法则;如果 EventArgs 不是简单的“EventArgs”,那么参数中通常会有一些有用的东西。在您的情况下,“ControlEventArgs”包含您需要的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-12
  • 1970-01-01
  • 1970-01-01
  • 2013-04-29
相关资源
最近更新 更多