Windows Form 之间相互引用

想用WinForm写点东西,遇到一个郁闷的问题,想在Forms之间相互传值遇到困难。上网找到一个解决方法,又自创一种。假设要在Form1中创建Form2,Form2要访问Form1,最简单的方法是给Form2加上一个

public  Form1 parent;

Form1创建Form2时这样写:

None.gif Form2 f2  =   new  Form2();
None.giff2.parent 
=   this ;
None.giff2.Show();

就在Form2中可以用 parent 访问Form1了。

但是如果Form1和Form2没有父子关系,Form2不是在Form1中创建,Form2也不是在Form1中创建,怎么得到对方的实例呢?这里以Form1为例。我们创建另一个Form,用它来实例化其他Form,比如叫 Starter。

在Starter中加上静态变量f1和静态方法GetForm1():

ContractedBlock.gif ExpandedBlockStart.gif Class Starter
None.gif    public partial class Starter : Form
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif{
InBlock.gif        
public static Form1 f1;
InBlock.gif
InBlock.gif        
public static Form1 GetForm1()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
if (f1 == null)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                f1 
= new Form1();
ExpandedSubBlockEnd.gif            }

InBlock.gif            
return f1;
ExpandedSubBlockEnd.gif        }

InBlock.gif        
InBlock.gif        
public Starter()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            InitializeComponent();
InBlock.gif            GetForm1().Show();            
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif    }

就可以用Starter.GetForm1()得到f1啦。再把Starter设置为启动最小化,不在状态栏显示,我们就看不到它啦。

PS:还发现任何事件的 XXXing()处理函数里面都可以把事件的 EventArgs e这个 e.Cancel 设为 true,就把这个事件取消了,竟然现在才知道这么有用的东东。。。-_-

转载于:https://www.cnblogs.com/dxz/archive/2006/05/29/winform_cross_reference.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值