向组件开发高手请教一个问题! llx529(白日梦),你好,期待你的答复,最好能贴一段代码以供参考,感谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 第一个问题:不知道能不能指定默认的构造函数(估计难啊)。第二个问题简单:首先,自定义一个ClickedEventArgs 和 delegate,例如:public delegate void ClickedEventHandler(object sender, ClickedEventArgs e);public class ClickedEventArgs{ ....}然后,给控件加事件:public event ClickedEventHandler Clicked; FJGoodGood(_FJ_强中强),你好,我这个组件有多个事件,我的问题是当在WebForm的设计器上双击这个组件时,能自动转到一个默认的事件上。就象Button有好几个事件,但Click应该是默认事件一样,当在设计器上双击Button时,就自动生成Button1_Click()方法以及对Click事件的预订。请问这种功能如何实现? 1.如果是带参数的构造函数,你参数怎么能提前传递呢?试试添加个属性,属性应用[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]。然后在这个属性里初始化个帮助类,带有this参数。帮助类应用[TypeConverterAttribute(typeof(System.ComponentModel.ExpandableObjectConverter))]帮助类完成初始化工作。2.给class应用DefaultEvent属性 psn(psn),谢谢你的回答,如果我们编写一个继承自Component的组件,在客户端把它拉到Web设计器的页面上,就发现生成的页面代码是这样的: public class WebForm1 : System.Web.UI.Page { protected SyniWorx.WebUI.Shared.Component1 component11; private System.ComponentModel.IContainer components; private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 } #region Web Form Designer generated code override protected void OnInit(EventArgs e) { // // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。 // InitializeComponent(); base.OnInit(e); } /// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() { this.components = new System.ComponentModel.Container(); this.component11 = new SyniWorx.WebUI.Shared.Component1(this.components); // 我想把这里的参数换我的(this.components, this)行不行? this.Load += new System.EventHandler(this.Page_Load); } #endregion }注意程序的倒数第6行,程序调用的是一个参数为this.components的构造函数,我想让它改为调用另一个构造函数(多了一个Page对象)。这里如果你说参数不能提前传递,那么为什么它传刚刚实例化的Container就可以呢?所以我想我的要求也应该是可以做到的。第2个问题就象你说的那样,比较容易。谢谢。 to 楼主,在类定义前面加一个属性:[DefaultEvent("XXXChanged")] 就可以了。 to winxieddd(一剑飘香(找工作)) ,你好,不太明白你的意思,你是说手动修改设计器自动生成的代码吗?那样不行,会出问题的,设计器会删除你改写的代码的。 winxieddd(一剑飘香(找工作)), 你好,我在这里只是想把当前页面作为参数传给组件,当然我也可以自己在代码文件中写实例化组件的语句并传送this参数,只不过我想把这个组件做的更完美些,因为有可能把它给其它人用,所以用起来越简单越好。我参考了.NET工具箱中自带的几个组件,比如Timer、SqlDataAdapter等,发现做的都很完美,拖拉的时候由设计器自动生成初始化语句,有的还能自动添加一些其它功能的辅助语句。所以我觉得我的想法应该是可以实现的。我现在正在看psn(psn)推荐的ComponentDesigner等设计器支持类,又学到不少新东西。希望能很快把这个问题解决。 iphone怎么接收.net webservice返回的dataset vs2008的执行性能问题 请问这是什么错误呀??? ArrayList绑定GridView排序问题 C# API 串口通信 代码 DataSet.Tables[0]的使用问题 win7系统下用vs 2010编写wpf程序,登录成功就出来四个主窗体 关于拖动无边框窗体 哪位能告诉我哪里由《asp.net 完全手册》的源码 C#下的结构体数组常量如何实现? 如何定义SetDataBinding,Caption???急!! 在c#怎样将图片写入和读取oracle数据库
不知道能不能指定默认的构造函数(估计难啊)。第二个问题简单:首先,自定义一个ClickedEventArgs 和 delegate,例如:
public delegate void ClickedEventHandler(object sender, ClickedEventArgs e);
public class ClickedEventArgs
{
....
}然后,给控件加事件:
public event ClickedEventHandler Clicked;
试试添加个属性,属性应用[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]。
然后在这个属性里初始化个帮助类,带有this参数。
帮助类应用[TypeConverterAttribute(typeof(System.ComponentModel.ExpandableObjectConverter))]
帮助类完成初始化工作。
2.给class应用DefaultEvent属性
{
protected SyniWorx.WebUI.Shared.Component1 component11;
private System.ComponentModel.IContainer components;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
} #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.component11 = new SyniWorx.WebUI.Shared.Component1(this.components); // 我想把这里的参数换我的(this.components, this)行不行?
this.Load += new System.EventHandler(this.Page_Load); }
#endregion
}注意程序的倒数第6行,程序调用的是一个参数为this.components的构造函数,我想让它改为调用另一个构造函数(多了一个Page对象)。这里如果你说参数不能提前传递,那么为什么它传刚刚实例化的Container就可以呢?所以我想我的要求也应该是可以做到的。
第2个问题就象你说的那样,比较容易。谢谢。
不太明白你的意思,你是说手动修改设计器自动生成的代码吗?那样不行,会出问题的,设计器会删除你改写的代码的。
我在这里只是想把当前页面作为参数传给组件,当然我也可以自己在代码文件中写实例化组件的语句并传送this参数,只不过我想把这个组件做的更完美些,因为有可能把它给其它人用,所以用起来越简单越好。我参考了.NET工具箱中自带的几个组件,比如Timer、SqlDataAdapter等,发现做的都很完美,拖拉的时候由设计器自动生成初始化语句,有的还能自动添加一些其它功能的辅助语句。所以我觉得我的想法应该是可以实现的。我现在正在看psn(psn)推荐的ComponentDesigner等设计器支持类,又学到不少新东西。希望能很快把这个问题解决。