zoukankan      html  css  js  c++  java
  • winform- 给自定义控件添加事件

    下面是用户控件的代码:

    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);
            }
  • 相关阅读:
    kmeans 初步学习小结
    CAVASS使用经验
    分类之数据集导入matlab方法
    彩色图转化成灰度图
    阈值分割之迭代选择阈值法
    初步学习之FCM
    特征提取学习之HOG原理讲解
    特征提取初步学习之LBP算法
    CodePen.io网站前端设计开发平台
    阿里负责人揭秘面试潜规则
  • 原文地址:https://www.cnblogs.com/cxeye/p/14267848.html
Copyright © 2011-2022 走看看