c#之委托 (窗体传指) delegate 方式最简单

本文介绍了一个C#应用程序中窗体之间的通信机制,通过使用委托实现子窗体向主窗体传递角度和半径参数。详细展示了如何定义委托、在子窗体中触发事件并调用主窗体的方法来接收这些参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

namespace CS_DrawCartoon
{
    // 委托
    public delegate void GetAngleRadiusDeletgate(int iAngle , int iRadius);

    public partial class frmBzEdit : Form
    {
        private frmAdjustPoint frmAdjPt;

        private void btnTestfrmAdjustPoint_Click(object sender, EventArgs e)
        {
            if (frmAdjPt == null)
            {
                frmAdjPt = new frmAdjustPoint();
                frmAdjPt.msgSender = this.RotateRecver;
                frmAdjPt.Show(this);
            }
            else
            {
                if (frmAdjPt.IsDisposed)
                {
                    frmAdjPt = new frmAdjustPoint();
                }
                frmAdjPt.msgSender = this.RotateRecver;
                frmAdjPt.Visible = false;
                frmAdjPt.Show(this);//激活窗体 给予焦点
            }
        }

        private void Receiver(int angle, int radius)
        {
            Console.WriteLine("angle:{0}, radius:{1}", angle, radius);
        }
    }
}

以上是 Main form 里的代码

以下是从 form里的代码, 从form里有2个updown控件, 当值被改变时, 调用Main form里的Receiver事件做处理

namespace CS_DrawCartoon
{
    public partial class frmAdjustPoint : Form
    {
        public GetAngleRadiusDeletgate msgSender;

        public frmAdjustPoint()
        {
            InitializeComponent();
        }

        private void AngleUpDown_ValueChanged(object sender, EventArgs e)
        {
            if (msgSender != null)
            {
                msgSender( Convert.ToInt32( AngleUpDown.Value ) ,Convert.ToInt32(RadiusUpDown.Value ));
            }
        }

        private void RadiusUpDown_ValueChanged(object sender, EventArgs e)
        {
            if (msgSender != null)
            {
                msgSender(Convert.ToInt32(AngleUpDown.Value), Convert.ToInt32(RadiusUpDown.Value));
            }
        }
    }
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值