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

这样在改变用户控件中的值的时候,在窗体终究可以监听到这个事件什么时候触发。
C# winform中自定义用户控件 然后在页面中调用用户控件的事件的更多相关文章
- 回发或回调参数无效。在配置中使用 pages enableEventValidation=true 或在页面中使用 %@ Page EnableEventValidation=true % 启用了事件验证
WebForm中回发或回调参数无效问题的解决 解决 .NET中回发或回调参数无效问题的解 该错误的详细提示信息为: 回发或回调参数无效.在配置中使用 <pages enableEventVali ...
- 回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。
问题补充: “/Source”应用程序中的服务器错误. 回发或回调参数无效.在配置中使用 <pages enableEventValidation="true"/> 或 ...
- jQuery 中使用 DOM 操作节点,对页面中的表格实现增、删、查、改操作
查看本章节 查看作业目录 需求说明: 在 jQuery 中使用 DOM 操作节点,对页面中的表格实现增.删.查.改操作 点击"增加"超链接时,将表格中的第一条数据添加到表格的末尾 ...
- 在Struts2框架中使用OGNL表达式(在jsp页面中使用OGNL表达式)
1. Struts2引入了OGNL表达式,主要是在JSP页面中获取值栈中的值 2. 具体在Struts2中怎么使用呢?如下步骤 * 需要先引入Struts2的标签库(在JSP页面的最上面位置) > ...
- angular4 动态Form中获取表单字段并在页面中使用的方法
主要有两种方式 第一种 使用get属性 页面中使用如下: 第二种 使用普通方法事件 页面中使用如下 *转载请附出处
- 033. asp.netWeb用户控件之二将页面转换成web控件和使用Web控件显示热点新闻
访问Web用户控件的属性 ASP.NET提供的各种服务器控件都有其自身的属性和方法,程序开发人员可以灵活地使用服务器控件中的属性和方法开发程序.在用户控件中,程序开发人员也可以自行定义各种属性和方法, ...
- 在ASP.NET MVC 3 中自定义AuthorizeAttribute时需要注意的页面缓存问题
一.ASP.NET MVC中使用OutputCache实现服务器端页面级缓存 在ASP.NET MVC中,假如我们想要将某个页面(即某个Action)缓存在服务器端,可以在Action上标上以下特性: ...
- Servlet从本地文件中读取图片,并显示在页面中
import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpSer ...
- 关于在c#中引用外部dll文件,在页面中找不到命名空间
最近在项目中碰到这样的问题,经过搜索,发现是vs2010的版本不对,VS默认的版本是.NET Framework 4 Client Profile,需要将他更改为.NET Framework 4 版本 ...
随机推荐
- WPF:理解TileBrush(ImageBrush,DrawingBrush和VisualBrush)
ImageBrush:利用图像绘制区域 ImageBrush 是一种将自身内容定义为图像的 TileBrush,图像通过它的 ImageSource 属性指定. 您可以控制图像的拉伸.对齐和平铺方式, ...
- 【BZOJ3144】切糕(网络流,最小割)
[BZOJ3144]切糕(网络流,最小割) 题面 BZOJ 题解 这样的类型很有趣 先不考虑相邻距离差不能超过\(D\)的限制 我们考虑答案,显然就是在每个位置选一个最小的高度割就行了 化成最小割的模 ...
- bzoj1014: [JSOI2008]火星人prefix splay+hash+二分
Description 火星人最近研究了一种操作:求一个字串两个后缀的公共前缀.比方说,有这样一个字符串:madamimadam,我们将这个字符串的各个字符予以标号:序号: 1 2 3 4 5 6 7 ...
- Pandas:SettingWithCopyWarning
当我为数据增加新的列的时候,Pandas一直报错:SettingWithCopyWarning 这个问题没有很好地解决方法,因为这个问题也无关大碍,不让Pandas报错就行了. 解决方法: pd.op ...
- 练习-99乘法表 token生成器 翻译小工具
一.99乘法表 1.1 技术点 记住: for 循环的使用,以及for的嵌套使用 range()的使用,掌握sep为负数的使用的使用. print() 函数的使用,默认的结尾的换行符 替换 end= ...
- 验证email是否合法
https://buluo.qq.com/p/detail.html?bid=339910&pid=6675390-1514450689&from=grp_sub_obj 场景1:验证 ...
- spring 核心接口之 Ordered
Spring中提供了一个Ordered接口.从单词意思就知道Ordered接口的作用就是用来排序的.Spring框架是一个大量使用策略设计模式的框架,这意味着有很多相同接口的实现类,那么必定会有优先级 ...
- zset类型以及其操作
sorted set类型 sorted sets类型以及其操作zset是set的一格升级版本,它在set的基础上增加了一格顺序属性,这一属性在添加元素的同时可以指定,每次指定后,zset会自动重新按照 ...
- JQuery强大的操控标签能力
jquery选择器 $("#myId") 选择id为myId的元素 $(".myClass") 选择class为myClass的元素 ...
- CDN推送
一.什么是CDN推送 当后端服务器中的DNS有更新的时候,在varnish的缓存中应该及时地同步后端服务器中的内容.相当于清空varnish中的缓存,当下一次进行访问时,直接从服务器中获取新的内容. ...