下面是用户控件的代码:

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

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

最新文章

  1. 我在 CSDN 的小窝
  2. oracle从游标批量提取数据
  3. POJ 3071 Football(概率DP)
  4. ThreadLocal,ThreadLocalMap,Thread 的相互关系
  5. 创建共享内存函数CreateFileMapping()详解
  6. [转]swift 学习资源 大集合
  7. iOS系统自带的 UIAlertView 自动旋转的实现
  8. .NET vs JAVA
  9. 灰度共生矩阵(GLCM) 及matlab代码实现
  10. DBMS 的个人理解
  11. cassandra 3.x官方文档(5)---探测器
  12. design language
  13. 后台List里的数据传到前台表格和下拉列表为什么不显示
  14. 学习笔记CB012: LSTM 简单实现、完整实现、torch、小说训练word2vec lstm机器人
  15. Python 安装beautifulsoup4遇到No module named setuptools问题解决方法
  16. 结对项目——黄金分割点游戏(陈香宇&amp;蔡春燕)
  17. 状压dp-----三进制
  18. 下载B站、秒拍等视频网站视频
  19. nyoj743-复杂度 【排列组合】
  20. 【LOJ】#2046. 「CQOI2016」路由表

热门文章

  1. Linux命令详解-date
  2. 通过windows的超级终端连接华为交换机
  3. 十三、dbms_flashback(用于激活或禁止会话的flashback特征)
  4. SSM整合Redis
  5. qt QTableWidget&amp;&amp;QTableView 导出数据到excel
  6. Mysql 建表时报错 invalid ON UPDATE clause for &#39;create_date&#39; column
  7. progressbar进度条组件
  8. 一个功能丰富的 jQuery 树形插件 z-tree
  9. losetup命令
  10. web.xml文件模板