下面是用户控件的代码:

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

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

C# winform中自定义用户控件 然后在页面中调用用户控件的事件的更多相关文章

  1. 回发或回调参数无效。在配置中使用 pages enableEventValidation=true 或在页面中使用 %@ Page EnableEventValidation=true % 启用了事件验证

    WebForm中回发或回调参数无效问题的解决 解决 .NET中回发或回调参数无效问题的解 该错误的详细提示信息为: 回发或回调参数无效.在配置中使用 <pages enableEventVali ...

  2. 回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。

    问题补充: “/Source”应用程序中的服务器错误. 回发或回调参数无效.在配置中使用 <pages enableEventValidation="true"/> 或 ...

  3. jQuery 中使用 DOM 操作节点,对页面中的表格实现增、删、查、改操作

    查看本章节 查看作业目录 需求说明: 在 jQuery 中使用 DOM 操作节点,对页面中的表格实现增.删.查.改操作 点击"增加"超链接时,将表格中的第一条数据添加到表格的末尾 ...

  4. 在Struts2框架中使用OGNL表达式(在jsp页面中使用OGNL表达式)

    1. Struts2引入了OGNL表达式,主要是在JSP页面中获取值栈中的值 2. 具体在Struts2中怎么使用呢?如下步骤 * 需要先引入Struts2的标签库(在JSP页面的最上面位置) > ...

  5. angular4 动态Form中获取表单字段并在页面中使用的方法

    主要有两种方式 第一种 使用get属性 页面中使用如下: 第二种 使用普通方法事件  页面中使用如下 *转载请附出处

  6. 033. asp.netWeb用户控件之二将页面转换成web控件和使用Web控件显示热点新闻

    访问Web用户控件的属性 ASP.NET提供的各种服务器控件都有其自身的属性和方法,程序开发人员可以灵活地使用服务器控件中的属性和方法开发程序.在用户控件中,程序开发人员也可以自行定义各种属性和方法, ...

  7. 在ASP.NET MVC 3 中自定义AuthorizeAttribute时需要注意的页面缓存问题

    一.ASP.NET MVC中使用OutputCache实现服务器端页面级缓存 在ASP.NET MVC中,假如我们想要将某个页面(即某个Action)缓存在服务器端,可以在Action上标上以下特性: ...

  8. Servlet从本地文件中读取图片,并显示在页面中

    import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpSer ...

  9. 关于在c#中引用外部dll文件,在页面中找不到命名空间

    最近在项目中碰到这样的问题,经过搜索,发现是vs2010的版本不对,VS默认的版本是.NET Framework 4 Client Profile,需要将他更改为.NET Framework 4 版本 ...

随机推荐

  1. 学习 nginx (持续更新)

    什么是代理与反向代理,有什么应用场景? 平常经常听别人说代理与反向代理,那么这二者到底有什么区别呢? 代理 场景:我需要访问一个服务器C,但是由于某些原因我无法访问到它,(典型的就是你FQ,然后fai ...

  2. 4.彻底理解synchronized

    1. synchronized简介 在学习知识前,我们先来看一个现象: public class SynchronizedDemo implements Runnable {    private s ...

  3. Linux命令nohup+screen 转

    如果想在关闭ssh连接后刚才启动的程序继续运行怎么办,可以使用nohup.但是如果要求第二天来的时候,一开ssh,还能查看到昨天运行的程序的状态,然后继续工作,这时nohup是不行了,需要使用scre ...

  4. Day34 设计模式

    参考博客: http://www.cnblogs.com/alex3714/articles/5760582.html 什么是设计模式 Christopher Alexander:“每一个模式描述了一 ...

  5. MySQL修改字符集编码

    通过修改字符集编码为utf8,彻底解决中文问题. 一. 登录MySQL查看用SHOW VARIABLES LIKE 'character%':下字符集,显示如下: +----------------- ...

  6. C++多线程2.beginthread

    C++ 多线程2 beginthread 启动线程知识 20131021 Reference: http://blog.csdn.net/laoyang360/article/details/7720 ...

  7. ASP.NET网站使用Kindeditor富文本编辑器配置步骤

    1. 下载编辑器 下载 KindEditor 最新版本,下载页面: http://www.kindsoft.net/down.php 2. 部署编辑器 解压 kindeditor-x.x.x.zip ...

  8. fidder设置断点,修改请求参数等

    设置断点(来自:http://jingyan.baidu.com/article/17bd8e52216c8d85ab2bb8e9.html): 可以看到当前有一个抓取的很多的包的链接的地址的信息,那 ...

  9. ES6入门之对象扩展

    ES5对象(超类)原有: 属性:construct构造函数 方法: object.hasOwnProperty( propertyName ) //检测是否有一个本地的属性而不是继承的,返回boole ...

  10. java事务(三)

    java事务(三)——自己实现分布式事务 在上一篇<java事务(二)——本地事务>中已经提到了事务的类型,并对本地事务做了说明.而分布式事务是跨越多个数据源来对数据来进行访问和更新,在J ...