C# 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);
        }

這樣在改變用戶控件中的值的時候,在窗體終究可以監聽到這個事件什么時候觸發。

 

-----------------------------

天王蓋地虎小說網:http://www.twgdh.com/

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM