【问题标题】:Manipulate a single instance from a multiple instance of a form从表单的多个实例中操作单个实例
【发布时间】:2016-06-29 03:46:21
【问题描述】:

我有一个可以多次实例化的 C# 类,即表单。每次实例化表单时,它的所有文本框都是只读的。我还有一个带有edit_button 的菜单栏。应该发生的是;当我专注于单个表单并按下菜单栏上的 edit_button 时,该特定表单的只读文本框变为可编辑但仅适用于具有焦点的表单。其余没有焦点的,不会受到影响。我不能给出示例代码,因为我不知道如何去做。你能帮我吗?谢谢。

【问题讨论】:

  • 除非您有类变量(静态字段),否则这是 Windows 窗体的常见行为。它不会影响其他形式。向我们展示您的代码。
  • 我还没有任何代码,因为我不知道该怎么做。如果你能给我指路,我可能可以创建代码。我所拥有的是不相关行为的代码,例如保存、编辑、使文本框只读属性为 true 等。它与我遇到的问题无关,

标签: c#


【解决方案1】:

根据您的描述,菜单栏似乎与所有多种形式分开......这是一个 MDI 应用程序吗?

如果是这样,在您的编辑按钮单击处理程序中,您可以执行以下操作:

var activeForm = this.ActiveMdiChild; // assuming 'this' is the parent MDI form
foreach(var control in activeForm.Controls) {
    // do something here (enable textboxes)
}

【讨论】:

  • 这是一个 MDI。会试试这个指甲油。
  • 我很确定这会起作用,唯一的问题是;我忘了提到我的文本框在一组和不同的面板中,所以代码对我不起作用。谢谢。
  • 这是一个与控制层次结构相关的单独问题。快速而肮脏的方法是在您的表单中创建一个公共方法来手动启用文本框,您可以将其称为 (this.ActiveMdiChild as MyForm).EnableTextBoxes()。但是,更健壮的解决方案是遍历表单的控件层次结构并获取所有文本框。
  • 这是一个链接,显示了一种将所有子项放入表单(或任何容器)的方法:stackoverflow.com/questions/8595425/…
  • 我采用了肮脏的方法,它奏效了!我会在其他时间研究你提供的链接。谢谢!
猜你喜欢
  • 2015-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-11
  • 1970-01-01
  • 2014-08-18
  • 2015-08-26
相关资源
最近更新 更多