【问题标题】:Resetting a winform's elements to initialized state (C#/.Net) [closed]将winform的元素重置为初始化状态(C#/.Net)[关闭]
【发布时间】:2010-09-25 03:46:58
【问题描述】:

我正在用 C# 构建一个 winform,面板中有各种元素,这些元素以不可见、禁用或设置为 null(标签、组合框、网格等)开始。当用户浏览并做出选择时,这些元素会被填充、选择等。

这个想法是上传文件,读取它们,并将条目处理到数据库中。完成此目录的处理后,我希望能够让用户选择另一个目录,而无需退出并重新启动 winform 应用程序,方法是按下该过程完成后变为可见的按钮。

是否有一个简单的调用来重置应用程序(或包含元素的面板),类似于刷新 web 表单时,还是我必须编写一个函数来一次“重置”所有这些元素?

编辑:作为开发会议的结果,我的项目改变了方向。感谢两位帮忙解答的问题,我将结束这个问题。

【问题讨论】:

  • 嗨。这个问题的答案为我指出了一个解决我的一个问题的解决方案。也许您应该重新打开它,因为它可能与您无关,可能与其他人有关。

标签: c# asp.net winforms initialization


【解决方案1】:

从表单中简单删除面板并创建新面板。

编辑: 示例:

Panel CreatePanelWithDynamicControls() {
    Panel ret = new Panel();
    ret.Dock = DockStyle.Fill;
    // some logic, which initialize content of panel

    return ret;
}

void InitializeDynamicControls() {
    this.Controls.Clear();
    Panel pnl = this.CreatePanelWithDynamiControls();
    this.Controls.Add( pnl );
}

void Form1_Load( object sender, EventArgs e ) {
    if ( !this.DesignMode ) {
        this.InitializeDynamicControls();
    }
}

// I don't know exactly, on which situation
// do you want reset controls
void SomeEvent( object sender, EventArgs e ) {
    this.InitializeDynamicControls();
}

【讨论】:

  • 我正在尝试这个 - 我认为它可能会起作用。如果是这样,我会标记你最佳答案。
  • 它完成了,但是它没有重置TabPage中的元素,它把它放在了最后。我可能必须将所有元素包含在另一个面板中,然后删除并仅添加面板。
  • 这几乎就在那里,所以本着看不到那个烦人的红色消息的精神,我把它标记得最好。
【解决方案2】:

您可以尝试调用 this.InitializeComponent(),这可能会成功。或者,如果您的应用程序具有“目录选择”表单和“处理文件”表单,您可以让“目录选择”表单在“处理文件”表单上执行“新建”,这应该将其返回到其原始状态(而不是在它的但是打开)。

【讨论】:

  • 它抛出了一个错误,因为(我认为)调用它的按钮不是要重新初始化的对象。
  • 如果您在一个表单上,并且您调用“this”,它应该是指该表单。什么错误?
  • 也许这是我的问题。然而,事实证明,作为开发会议的结果,他们希望数据网格保持不变,以便可以添加记录,因此我无法重新启动标签页面板。无论如何,谢谢。
猜你喜欢
  • 1970-01-01
  • 2014-06-15
  • 2021-01-15
  • 2019-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-12
  • 2020-08-31
相关资源
最近更新 更多