.NET开发winform问题(二)

 

窗体之间的对象如何相互引用或操作
第二个要说的是窗体之间的对象如何相互引用或者操作。
常见的类似问题有:
1. 如何在子窗体访问到主窗体中的某某数据;
2. 如何在子窗体中调用主窗体中的某某方法;
3. 如何在子窗体关闭的时候去更新主窗体的某某数据。
 
对于如上的三个问题,完全可以由如下两种方法来完成:
1. 当数据是子窗体显示的必要条件的话,通过修改子窗体的构造函数来进行传递数据;
2. 如果是不定时的访问,则可以通过委托来实现。
 
对于第一点,我就不多说了,对于第二点,我用如下的例子来说明。
首先在子窗体中,需要如下:
    //在主窗体中定义两个delegate分别用于设置或者获取主窗体中文本框的值
    public delegate void SetTextValue( string TextValue );
    public delegate string GetTextValue( );
    // 在子窗体中
    // Handler for methods from main form
    private SetTextValue SetText = null;
    private GetTextValue GetText = null;
 
    // 通过如下所示来调用方法
    string strValue = GetText();
    SetText( strValue + DateTime.Now.ToString() );
 
除了如上一些操作外,还需要修改子窗体的构造函数,来接收这两个delegate方法,这里就不多说了。
 
至于主窗体,首先要为这两个委托来实现对应函数,例如:
    /// <summary>
    /// 从其它窗体获取文本值
    /// </summary>
    /// <returns> </returns>
    private string GetValue()
    {
        return yourTextBox.Text;
    }
 
    /// <summary>
    ///设置其它窗体的文本值
    /// </summary>
    /// <param name="sValue"> </param>
    private void SetValue( string sValue )
    {
        yourTextBox.Text = sValue;
    }
 
 
那么调用子窗体的时候就比较简单了。
 
    //创建子窗体并且显示
    yourSubForm myForm = new yourSubForm( 
        new SetTextValue( SetValue ),
        new GetTextValue( GetValue ) );
    myForm.ShowDialog();
 
这样一个通过委托来操纵主窗体的例子就完成了。这里需要注意的一点,如果在子窗体中大量使用到主窗体的数据的话,那我建议你重新考虑窗体架构,这意味着你目前的窗体架构不合理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值