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 版本 ...
随机推荐
- java开发中的重中之重-------mysql(基础篇)
介绍: mysql是目前世界上最流行的关系型数据库,在国内大的互联网公司都在使用mysql数据库,mysql经常被我们这样概述,“mysql是轻量级关系型数据库”,其实轻量级并不是说mysql是中小型 ...
- UVA-10047 The Monocycle (图的BFS遍历)
题目大意:一张图,问从起点到终点的最短时间是多少.方向转动也消耗时间. 题目分析:图的广度优先遍历... 代码如下: # include<iostream> # include<cs ...
- vue组件间传值
父传子 1.父组件:在子组件容器内绑定数据 <router-view :unusedOrderNum="num1" :usedOrderNum="num2" ...
- 011PHP基础知识——运算符(四)
<?php /** * 连接运算符: . 连接2个参数生成新的字符串: */ /*$str="中国"; $bbs="bbs.blog.com"; $new ...
- 009-对象—— 构造方法__construct析构方法__destruct使用方法 PHP重写与重载
<?php /**构造方法__construct析构方法__destruct使用方法 PHP重写与重载 */ //构造方法:当实例化对象时,自动运行的方法 /*class channel{ fu ...
- ubuntu安装搜狗输入法的相关问题
最近换了一次电脑,要重新装系统,就选择了ubuntu14.04 LTS版本的,这个版本官方支持到2019年了,所以相对来说比较稳定,也不用担心软件源的问题.不像14.10那样,现在官方已经没有软件源的 ...
- L166
THE idea of underwater mining is not restricted to the ocean floor (see article). High water tables ...
- Linux下系统的定时及延时任务
一.系统的延时 是临时的.对系统做的任务指定一个时间点.发起的命令是at at 时间点(now+1min) ## 设定任务实行时间 at> 执行命令 ...
- LINUX文件的权限
一.权限设定的意义:系统最底层安全设定方法之,保证文件可以被可用的用户做相应操作. 二.文件权限的查看(alias) 命令:ls ls -l file ## 查看文件属性 ls -ld mkdir ...
- 起thread时,运行报错terminate called without an active exception
I am getting a C++ error with threading: terminate called without an active exception Aborted How to ...