winform 动态生成窗口 ,怎么根据里面的控件获得窗口信息

爬山的小兔 2017-04-20 11:22:56
目标:右侧有几组配置参数(每一组有很多数据),用户可以把右侧一组一组拖出来,而且可以全部拖出来。然后还可以放回去
实现:把用户拖出来的一组配置参数放在窗体中,这个窗体是动态生成的了。如果用户同时出来几组参数,放在不同的窗体了。用户要把某组参数放回去,我可以知道用户在操作哪组参数,可以把参数放回去,但是承载这组参数的窗体怎么注销掉啊。


各位大侠,帮忙看看啊。如果有更好的实现目标方法,大家帮忙告诉下。
...全文
346 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
爬山的小兔 2017-05-08
  • 打赏
  • 举报
回复
9楼正解,应该放入集合或者字典中来获取。
assky124 2017-05-04
  • 打赏
  • 举报
回复
MDI 窗体?
  • 打赏
  • 举报
回复
比如说,你的系统中可能有8中窗体,运行时可能有50个窗体实例,其中有40个都是用户当前正在编辑“参数”时涉及的那些个窗体。这40个,其实是编辑界面的属性,编辑主窗体应该“拥有”这些窗体、组合这些窗体。例如
public partial class 编辑主窗体: Form
{
        public 编辑主窗体()
        {
            InitializeComponent();
        }

        public List<编辑子窗体> Children = new List<编辑子窗体>();

        .........
}
是一个组合关系。编辑主窗体实例,不能 fm=new Form()就丢掉它,而应该再写一行
this.Children.Add(fm);
来记住它。
  • 打赏
  • 举报
回复
引用 4 楼 wwei_2010 的回复:
窗体是动态生成的。窗体名怎么区分。右侧很多数据组,生成一个窗体我都用的fm=new Form();想关闭某个窗体时候,不能用 fm啊。因为它是最后生成的一个窗体了
不用“名”,而且你的逻辑中其实考虑到“窗体名”反而是没有必要的,后续会容易产生麻烦。 你的窗体就是一些 new 出来的对象,那么你应该在系统中(例如猪主窗体的局部变量级别,或者应用进程级别)保存这些对象的集合。fm 是一个变量,你不是要保存变量“名字”而是要保存“对象实例”,以便随时可以让拥有集合的对象能够遍历它,来判断哪些窗体需要Close。
  • 打赏
  • 举报
回复
你可以设置一个集合,例如
List<MyForm> fromList = new List<MyForm>();
来保存你要记住的那些特定的窗体。
bemehe 2017-05-04
  • 打赏
  • 举报
回复
想知道控件所在的窗体,应该可以取它的父容器得到吧 Form c = (Form)this.button1.Parent;
爬山的小兔 2017-05-03
  • 打赏
  • 举报
回复
没有大侠,帮忙解决下吗
爬山的小兔 2017-05-03
  • 打赏
  • 举报
回复
引用 3 楼 stherix 的回复:
不用的窗体直接Close就行了 会自动调用Dispose的
窗体是动态生成的。窗体名怎么区分。右侧很多数据组,生成一个窗体我都用的fm=new Form();想关闭某个窗体时候,不能用 fm啊。因为它是最后生成的一个窗体了
stherix 2017-04-20
  • 打赏
  • 举报
回复
不用的窗体直接Close就行了 会自动调用Dispose的
爬山的小兔 2017-04-20
  • 打赏
  • 举报
回复
爬山的小兔 2017-04-20
  • 打赏
  • 举报
回复
顶顶。

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧