• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#winform中自定义用户控件然后在页面中调用用户控件的事件

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

下面是用户控件的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace winform_test.UserControls
{
    public partial class conYMPC : UserControl
    {
        private string sb_ym;

        public string Sb_ym
        {
            get { return sb_ym; }
        }
        private string sb_pc;

        public string Sb_pc
        {
            get { return sb_pc; }
        }

        //委托
        public delegate void MyChangeEventHandler();
        //事件
        public event MyChangeEventHandler MyChange;
        //方法
        public void OnMyChange()
        {
            if (MyChange != null)
                MyChange();
        }


        public conYMPC()
        {
            InitializeComponent();
        }
        /// <summary>
        ///窗体初始化
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void conYM_Load(object sender, EventArgs e)
        {
            BindYear();
        }

        /// <summary>
        /// 得到年份
        /// </summary>
        private void BindYear()
        {
            string sql = "select distinct left(sb_ym,4)+'年' as sb_year from sb_ympc order by sb_year desc";
            DataSet ds = SqlHelp.GetDataSet(sql);

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                cboY.Properties.Items.Add(dr["sb_year"].ToString());
            }
            cboY.SelectedIndex = 0;
        }
        /// <summary>
        /// 得到月份
        /// </summary>
        private void BindMonth()
        {
            cboM.Properties.Items.Clear();
            string sql = "select distinct right(sb_ym,2)+'月' as sb_month from sb_ympc where sb_ym like '" + cboY.Text.Substring(0, 4) + "%' order by sb_month desc";
            DataSet ds = SqlHelp.GetDataSet(sql);
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                cboM.Properties.Items.Add(dr["sb_month"].ToString());
            }
            cboM.SelectedIndex = 0;
        }
        /// <summary>
        /// 得到批次
        /// </summary>
        private void BindPC()
        {
            cboPC.Properties.Items.Clear();
            string sql = "select sb_pc from sb_ympc where sb_ym='" + cboY.Text.Substring(0, 4) + cboM.Text.Substring(0, 2) + "' order by sb_pc";
            DataSet ds = SqlHelp.GetDataSet(sql);
            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                cboPC.Properties.Items.Add(dr["sb_pc"].ToString());
            }
            cboPC.SelectedIndex = 0;
        }
        /// <summary>
        /// 年份下拉列表框改变事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cboY_SelectedIndexChanged(object sender, EventArgs e)
        {
            BindMonth();
            CheckChange();
        }
        /// <summary>
        /// 月份下拉列表框改变事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cboM_SelectedIndexChanged(object sender, EventArgs e)
        {
            BindPC();
            CheckChange();
        }
        /// <summary>
        /// 批次下拉列表框改变事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cboPC_SelectedIndexChanged(object sender, EventArgs e)
        {
            CheckChange();
        }

        /// <summary>
        /// 检查下拉列表框的值是否改变,改变的话更新
        /// </summary>
        private void CheckChange()
        {
            string _sb_ym = cboY.Text.Substring(0, 4) + cboM.Text.Substring(0, 2);
            string _sb_pc = cboPC.Text;
            if (_sb_ym != sb_ym || _sb_pc != sb_pc)
            {
                sb_ym = _sb_ym;
                sb_pc = _sb_pc;
                OnMyChange();//触发这个方法
            }
        }
    }
}

这个图片是用户控件的截图:

 

下面是调用用户控件窗体的代码:

 

  private void frmStart_Load(object sender, EventArgs e)
        {
            //给控件绑定事件
            conYMPC1.MyChange += new UserControls.conYMPC.MyChangeEventHandler(aa);
        }

        void aa()
        {
            MessageBox.Show("申报年月:" + conYMPC1.Sb_ym + "  申报批次:" + conYMPC1.Sb_pc);
        }

这样在改变用户控件中的值的时候,在窗体终究可以监听到这个事件什么时候触发。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
(翻译)C#中的SOLID原则–里氏替换原则发布时间:2022-07-14
下一篇:
c#进阶之WebAPI发布时间:2022-07-14
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap