动态创建和删除控件

时间:2014-11-24 16:59:56

标签: vb.net tabs .net-3.5 control-array

我有一个程序,我多年前在VB6中编写的,运行良好。但是,我需要将所有应用程序移动到.NET。我现在还很新,编程不是我的主要工作。我是一个空中交通管制员:)我已经进行了广泛的搜索,但似乎没有任何内容可以涵盖我需要的所有要点。如果我错过了什么,我很抱歉。我可以处理操作数据的所有编码,动态创建和删除控件让我感到困惑。

该计划全天候运行。它有一个带有单个默认标签页的标签控件。每个页面都有许多控件(在.NET中,这些控件可能是文本框,标签,按钮和datagridview,可能各有两个)。该程序每60秒读取一个数据库,查找特定条目。找到此条目后,它会检查是否有条目的标签页。如果存在,则数据将添加到现有标签页(如果它尚未存在)。

如果条目不存在,则使用原始标签页中的所有控件构建新标签页,其位置相同且相同,并且必须是用户和程序可访问的。用户通过添加或编辑数据字段与每个选项卡进行交互,并且可以声明标签页"关闭"从进一步的数据输入。

最后,在一天结束时(通常在当地时间凌晨1点左右),除了原始标签之外的所有标签都会被清除以开始新鲜的一天。我还在数据库上运行了一个存档,但我已经弄明白了。

我的VB6应用程序的主要变化是失去了控制数组。我已经写了几个其他在启动时动态构建控件的应用程序,但是一旦程序加载它们就是静态的。当我不清楚它们在创建时将被命名为什么时,创建和删除所有这些控件是很困难的。每个新选项卡的常量是事件名称,它将被格式化为3-6个字符的位置名称和六位数日期,并在末尾添加冒号和序号。这是因为活动地点在白天可能会有多个活动。

如果有人需要有关我正在跟踪的内容的更具体信息,我们很乐意扩展。试着暂时保持简短。为了保留一些已在.NET中折旧的功能,我坚持使用3.5框架。

1 个答案:

答案 0 :(得分:0)

Plutonix提出了一个我没有考虑过的完美解决方案,并且比我正在做的更加实用。

不是创建和销毁所有这些控件,而是使用带有显示每个事件的网格的主窗体。网格行可以着色以显示状态(活动,关闭和需要注意)。双击一行将打开第二个表单,其中包含与该特定事件交互的必要控件。 DGV控件可以是数据绑定,这简化了编辑字段。

我已经使用这种方法做了一些快速的实验,它将完成我所需要的一切,而不会有任何麻烦。

感谢所有建议。所有想法都赞赏。 :)