附件1:http://files.cnblogs.com/xe2011/CSharp_WindowsForms_delegate03.rar 一个RTF文件管理器 描述 Form2,Form3,Form4都是独立存在的,同时完成独立的功能,相互不依赖. 最后把Form2,Form3,Form4集合放在FORM1上,实际上需要这3个的窗体Form2,Form3,Form4间相互得到改变后的变量值. FORM2 文件夹列表 在FORM1中设置一初始文件夹路径 要实现的功能:当单击本窗体中的TreeV…
附件:http://files.cnblogs.com/xe2011/CSharp_WindowsForms_delegate02.rar 窗体2 和窗体3 都是动态创建出来的 现在 FORM3.TEXT要即时 = FORM2.TEXT FORM1窗体代码 Form2 f2 = new Form2(); Form3 f3 = new Form3(); private void Form1_Load(object sender, EventArgs e) { f2.XYZ += new Form2…
附件 http://files.cnblogs.com/xe2011/CSharp_WindowsForms_delegate01.rar 需要每个窗体是独立存在,禁止相与引用窗体 这样干净并且可以反复重用 Form1的代码 private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.XYZ += new Form2.CallBack(GetForm2TextBox1Text); f2.S…
要实现子窗体与父窗体之间的通讯,有多种方法(比如:重载子窗体的构造函数,将父窗体的引用作为参数传递给子窗体).下面我要介绍的是利用自定义事件的方法,它能够最大程度的避免模块之间的耦合,充分体现面向对象的优点. 先将效果图展示给大家: [[The No.1 Picture.]] 下面是实现代码: Unit2 //子窗体 type //声明自定义事件的类型(类似于C#中的委托) TMyEventHandle = procedure (Sender: TObject; Content: string)…
一.问题:窗体间传值必须需要窗体之间有联系,具体有如下方式 窗体间传值涉及到窗体A必须拥有窗体B,这样才可以实现A-B之间传值 窗体A与窗体B在窗体/实例C中,A-B可互相通讯 其他方式,不细讨论,复杂不复杂看个人感觉 上述1/2方式即可实现窗体间通讯问题,但是不够简单,有前提条件,在编程过程中有很大麻烦需要处理 比如明明不需要有关联的窗体因为通讯必须关联起来 二.窗体间传值/通讯工具 描述:采用MVVMLight的通讯方式,以静态单例&委托&Key值方式对各窗体/类提供方法达到窗体/类间…
1. 添加Reflection //添加对Reflection程序集引用 using System.Reflection; // 引用窗体创建方法CreateForm,传入参数 private void btnCreateForm_Click(object sender, EventArgs e) { CreateForm("testForms", "UseAssemblyToCreateForms"); } /// <summary> /// 1.st…
Delphi中动态创建窗体有四种方式,最好的方式如下: 比如在第一个窗体中调用每二个,主为第一个,第二个设为动态创建 Uses Unit2; //引用单元文件 procedure TForm1.Button1Click(Sender: TObject);beginform2:=TForm2.Create(Application); //创建窗体form2.Show; //显示窗体end;end. ==================================================…
根据窗体的名称动态创建窗体 Assembly assembly = Assembly.GetExecutingAssembly();             // 实例化窗体 try { Form form = assembly.CreateInstance(lf.initForm) as Form; ); if(lf.administrative_level=="区县") { Form controlF = new control(); ); } } 这里我传入的 lf.initFo…
//第一种方式 procedure TForm1.btn1Click(Sender: TObject); begin With TForm2.Create(Application) do Try ShowModal; finally free; end; end; //第二种方式 procedure TForm1.btn2Click(Sender: TObject); begin if not assigned(Form2) then begin Form2:=TForm2.Create(nil…
用户控件: 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似.如果要在后台往窗体中添加, 将其实例化,然后添加到想要添加的容器的Control集合中. 动态创建添加控件: 可以在一个大容器里一次性放入多个控件 public Form2(haoyou hao) { InitializeComponent(); f = hao; } private void button1_Cl…