以下是我以前写的自定义控件,公布了事件~~~你自己研究一下
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;namespace NexSmart.NexCash.UI.DataCommand
{
/// <summary>
/// DataOperate 的摘要说明。
/// </summary>
public delegate void Add();
public delegate void Del();
public delegate void Edit();
public delegate void Cancel();
public delegate void Save();
/// <summary>
/// 自定义控件,用于数据操作
/// </summary>
public class DataOperate : System.Windows.Forms.UserControl
{
public event Add AddEvent;
public event Del DelEvent;
public event Edit EditEvent;
public event Cancel CancelEvent;
public event Save SaveEvent; private bool blnDel,blnEdit,blnCancel,blnAdd,blnSave;
private string strAddText = "增 加";
private string strEditText = "修 改";
private System.Windows.Forms.Button butAdd;
private System.Windows.Forms.Button butDel;
private System.Windows.Forms.Button butEdit;
private System.Windows.Forms.Button butCancel;
private System.Windows.Forms.Button butSave; #region "control property"
/// <summary>
/// 设置删除按钮的Enable属性
/// </summary>
public bool DelButtonEnable
{
get
{
return blnDel;
}
set
{
blnDel = value;
butDel.Enabled = blnDel;
}
}
/// <summary>
/// 设置编辑按钮的Enable属性
/// </summary>
public bool EditButtonEnable
{
get
{
return blnEdit;
}
set
{
blnEdit = value;
butEdit.Enabled = blnEdit;
}
} /// <summary>
/// 设置取消按钮的Enable属性
/// </summary>
public bool CancelButtonEnable
{
get
{
return blnCancel;
}
set
{
blnCancel = value;
butCancel.Enabled = blnCancel;
}
} /// <summary>
/// 设置增加按钮的Enable属性
/// </summary>
public bool AddButtonEnable
{
get
{
return blnAdd;
}
set
{
blnAdd = value;
butAdd.Enabled = blnAdd;
}
} /// <summary>
/// 设置保存按钮的Enable属性
/// </summary>
public bool SaveButtonEnable
{
get
{
return blnSave;
}
set
{
blnSave = value;
butSave.Enabled = blnSave;
}
}
/// <summary>
/// 设置增加按钮的Text属性
/// </summary>
public string AddButtonText
{
get
{
return strAddText;
}
set
{
strAddText = value;
butAdd.Text = strAddText;
}
} /// <summary>
/// 设置编辑按钮的Text属性
/// </summary>
public string EditButtonText
{
get
{
return strEditText;
}
set
{
strEditText = value;
butEdit.Text = strEditText;
}
} #endregion
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null; public DataOperate()
{
// 该调用是 Windows.Forms 窗体设计器所必需的。
InitializeComponent();
blnCancel = false; // TODO: 在 InitializeComponent 调用后添加任何初始化 } /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
} #region 组件设计器生成的代
private void butAdd_Click(object sender, System.EventArgs e)
{
if(butAdd.Text == "增 加")
{
butAdd.Text = "增加完毕";
butDel.Enabled = false;
butEdit.Enabled = false;
butCancel.Enabled = false;
butSave.Enabled = false; }
else
{
butAdd.Text = "增 加";
butAdd.Enabled = true;
butCancel.Enabled = true;
butSave.Enabled = true;
butDel.Enabled = true;
butEdit.Enabled = true;
} try
{
AddEvent();
}
catch (Exception ex)
{
MessageBox.Show( ex.ToString() );
}
} private void butDel_Click(object sender, System.EventArgs e)
{
blnCancel = true; //只要点击过该按扭,取消键就有效
butAdd.Enabled = true;
butCancel.Enabled = true;
butSave.Enabled = true;
butDel.Enabled = false;
// butEdit.Enabled = false; try
{
DelEvent();
}
catch
{
}
} private void butEdit_Click(object sender, System.EventArgs e)
{
blnCancel = true; //只要点击过该按扭,取消键就有效
if( butEdit.Text == "修 改")
{
butEdit.Text = "修改完毕";
butAdd.Enabled = false;
butCancel.Enabled = false;
butSave.Enabled = false;
butDel.Enabled = false;
}
else
{
butEdit.Text = "修 改";
butAdd.Enabled = true;
butCancel.Enabled = true;
butSave.Enabled = true;
butDel.Enabled = false;
butEdit.Enabled = true;
}
try
{
EditEvent();
}
catch
{
}
} private void butCancel_Click(object sender, System.EventArgs e)
{
butAdd.Enabled = true;
butDel.Enabled = false;
// butEdit.Enabled = false;
// butCancel.Enabled = false;
// butSave.Enabled = false;
try
{
CancelEvent();
}
catch(System.Exception err)
{
MessageBox.Show(err.Message.ToString());
}
} private void butSave_Click(object sender, System.EventArgs e)
{
butAdd.Enabled = true;
butDel.Enabled = false;
// butEdit.Enabled = false;
butCancel.Enabled = false;
butSave.Enabled = false;
try
{
SaveEvent();
}
catch
{
}
}
}
}
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;namespace NexSmart.NexCash.UI.DataCommand
{
/// <summary>
/// DataOperate 的摘要说明。
/// </summary>
public delegate void Add();
public delegate void Del();
public delegate void Edit();
public delegate void Cancel();
public delegate void Save();
/// <summary>
/// 自定义控件,用于数据操作
/// </summary>
public class DataOperate : System.Windows.Forms.UserControl
{
public event Add AddEvent;
public event Del DelEvent;
public event Edit EditEvent;
public event Cancel CancelEvent;
public event Save SaveEvent; private bool blnDel,blnEdit,blnCancel,blnAdd,blnSave;
private string strAddText = "增 加";
private string strEditText = "修 改";
private System.Windows.Forms.Button butAdd;
private System.Windows.Forms.Button butDel;
private System.Windows.Forms.Button butEdit;
private System.Windows.Forms.Button butCancel;
private System.Windows.Forms.Button butSave; #region "control property"
/// <summary>
/// 设置删除按钮的Enable属性
/// </summary>
public bool DelButtonEnable
{
get
{
return blnDel;
}
set
{
blnDel = value;
butDel.Enabled = blnDel;
}
}
/// <summary>
/// 设置编辑按钮的Enable属性
/// </summary>
public bool EditButtonEnable
{
get
{
return blnEdit;
}
set
{
blnEdit = value;
butEdit.Enabled = blnEdit;
}
} /// <summary>
/// 设置取消按钮的Enable属性
/// </summary>
public bool CancelButtonEnable
{
get
{
return blnCancel;
}
set
{
blnCancel = value;
butCancel.Enabled = blnCancel;
}
} /// <summary>
/// 设置增加按钮的Enable属性
/// </summary>
public bool AddButtonEnable
{
get
{
return blnAdd;
}
set
{
blnAdd = value;
butAdd.Enabled = blnAdd;
}
} /// <summary>
/// 设置保存按钮的Enable属性
/// </summary>
public bool SaveButtonEnable
{
get
{
return blnSave;
}
set
{
blnSave = value;
butSave.Enabled = blnSave;
}
}
/// <summary>
/// 设置增加按钮的Text属性
/// </summary>
public string AddButtonText
{
get
{
return strAddText;
}
set
{
strAddText = value;
butAdd.Text = strAddText;
}
} /// <summary>
/// 设置编辑按钮的Text属性
/// </summary>
public string EditButtonText
{
get
{
return strEditText;
}
set
{
strEditText = value;
butEdit.Text = strEditText;
}
} #endregion
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null; public DataOperate()
{
// 该调用是 Windows.Forms 窗体设计器所必需的。
InitializeComponent();
blnCancel = false; // TODO: 在 InitializeComponent 调用后添加任何初始化 } /// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
} #region 组件设计器生成的代
private void butAdd_Click(object sender, System.EventArgs e)
{
if(butAdd.Text == "增 加")
{
butAdd.Text = "增加完毕";
butDel.Enabled = false;
butEdit.Enabled = false;
butCancel.Enabled = false;
butSave.Enabled = false; }
else
{
butAdd.Text = "增 加";
butAdd.Enabled = true;
butCancel.Enabled = true;
butSave.Enabled = true;
butDel.Enabled = true;
butEdit.Enabled = true;
} try
{
AddEvent();
}
catch (Exception ex)
{
MessageBox.Show( ex.ToString() );
}
} private void butDel_Click(object sender, System.EventArgs e)
{
blnCancel = true; //只要点击过该按扭,取消键就有效
butAdd.Enabled = true;
butCancel.Enabled = true;
butSave.Enabled = true;
butDel.Enabled = false;
// butEdit.Enabled = false; try
{
DelEvent();
}
catch
{
}
} private void butEdit_Click(object sender, System.EventArgs e)
{
blnCancel = true; //只要点击过该按扭,取消键就有效
if( butEdit.Text == "修 改")
{
butEdit.Text = "修改完毕";
butAdd.Enabled = false;
butCancel.Enabled = false;
butSave.Enabled = false;
butDel.Enabled = false;
}
else
{
butEdit.Text = "修 改";
butAdd.Enabled = true;
butCancel.Enabled = true;
butSave.Enabled = true;
butDel.Enabled = false;
butEdit.Enabled = true;
}
try
{
EditEvent();
}
catch
{
}
} private void butCancel_Click(object sender, System.EventArgs e)
{
butAdd.Enabled = true;
butDel.Enabled = false;
// butEdit.Enabled = false;
// butCancel.Enabled = false;
// butSave.Enabled = false;
try
{
CancelEvent();
}
catch(System.Exception err)
{
MessageBox.Show(err.Message.ToString());
}
} private void butSave_Click(object sender, System.EventArgs e)
{
butAdd.Enabled = true;
butDel.Enabled = false;
// butEdit.Enabled = false;
butCancel.Enabled = false;
butSave.Enabled = false;
try
{
SaveEvent();
}
catch
{
}
}
}
}
public delegate void ButtonClickEventHandler(object sender,System.EventArgs e); //定义事件
public event ButtonClickEventHandler ButtonClick;// 以下是处理事件的方法
private void buttonBack_Click(object sender, System.EventArgs e)
{
ButtonClick(sender,e);
}----------------
主页面:
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
this.LiYunQiStepPanelControl11.ButtonClick += new ButtonClickEventHandler(this.???);//tab
}
既然已经把属性都public了,那么就不用把它作为方法的参数,直接在主页面访问就可以
string title = LiYunQiStepPanelControl1.TitlelabelText;
谢谢
按照你教的方法,修改后运行正常。
我的错误在于定义事件委托时定义了一个字符型入参,而实际上应该是事件(大概是这回事吧)另外,经常看到(object sender, System.EventArgs e)而且这里的e还有很多不同方法和属性
譬如dataGrid.Click等,能给解释一下(object sender, System.EventArgs e)到底是什么意思么?
常用的方法是什么?
分不太多,不好意思,先谢。
void Button1_Click(object sender, System.EventArgs e)
{
Button tmp = (Button)sender;
}
void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
{
DropDownList tmp = (DropDownList)sender;
}至于System.EventArgs则是用来保存事件数据,.net已经预定义好各种事件委托
个人觉得其实不用深究,详情参阅.net framework SDK文档很抱歉不能给你讲更多,一方面水平有限,一方面时间有限