我的用户控件 有一个文本框textBox1,我想为用户控件添一个textBox1_TextChanged事件,但不会添,请高手指教
解决方案 »
- 从外部复制一个gif的图片,怎么获取该gif图片呢?
- ExecuteNonQuery: Connection 属性尚未初始化。求解决办法
- C#入门经典上的一道简单的题目
- 无语了,VS2005打开个项目什么也没做就100%
- 用.net2005开发的winform的系统,菜单控件用Alt或F10都可以使焦点移到菜单上,假如我只想用Alt,不想用F10来控制怎么办呢?
- 请教:方法未获取"1"的参数
- User ID=sa;Data Source=NOLEGROO;Tag with column collation when possible=False;In
- GDI+问题??
- .net中有没有项目管理的软件? 就像Sourcesafe那种 是不是有Sourcesafe。net?
- 怎么才能按文本的行将他转换成数组?
- StreamReader到string的最快方法是怎样的
- c#中如何在线浏览ftp服务器中的图片
自己google一下“给用户控件添加事件”。
private void Form_1_Load(object sender, EventArgs e)
{
textBox1.TextChanged += new EventHandler(textBox1_TextChanged);
} void textBox1_TextChanged(object sender, EventArgs e)
{
}
(鼠标移动上去会显示 事件)
在下面找到TextChanged 在右边点一下鼠标 出现光标后 按一下回车键 就能加进去一个TextChanged 事件
没看清楚楼主的意思
现在这样行了吧 public partial class UserControl1 : UserControl
{
public event EventHandler TextChanged; public UserControl1()
{
InitializeComponent();
textBox1.TextChanged+=new EventHandler(textBox1_TextChanged);
} private void textBox1_TextChanged(object sender, EventArgs e)
{
if (this.TextChanged != null)
{
TextChanged(sender, e);
}
}
}
public class StringEventArgs : EventArgs
{
public string Arg; public StringEventArgs(string s)
{
this.Arg = s;
}
} public delegate void StringEventHandler(object sender, StringEventArgs e);在用户控件类中 public event StringEventHandler TextBox1TextChanged;
在textbox的textchanged事件中
private void textbox1_textchanged(....)
if (TextBox1TextChanged!= null)
{
TextBox1TextChanged.Invoke(this, new StringEventArgs(“xxx”));
}
在使用这个用户控件的类中 订阅上面的事件 mUserControl1.TextBox1TextChanged+= new StringEventHandler(UserControl1_TextBox1TextChanged);
} void UserControl1_TextBox1TextChanged(object sender, StringEventArgs e)
{
//(e.Arg);
}
这个差不离了,但是呢UserControl 是具有 Text 属性和 TextChanged 事件的,只是被隐藏了
调用属性和方法需要自己手动打
// 在 UserControl 中加入代码
private void textBox1_TextChanged(object sender, EventArgs e)
{
this.Text = this.textBox1.Text;
}// 在 Form_Load 事件中加入代码
this.userControl11.TextChanged += (obj, args) =>
{
this.Text = this.userControl11.Text;
};
那么怎么公开属性和事件呢?/*
* 控件设计相关
*
* System.ComponentModel
* System.ComponentModel.Design
* System.Windows.Forms.Design (System.Design.dll)
* System.Drawing.Design (System.Drawing.Design.dll)
*
* Attribute, eg:
* BrowsableAttribute 属性是否在 PropertyGrid 中可见
* EditorBrowsable 属性是否在 Member List 中可见
* 参考 System.ComponentModel
*
* Designer, eg:
* ControlDeigner 一般控件设计器
* ParentControlDesigner 可承载子控件的设计器
* 参考 System.ComponentModel.Design.ComponentDesigner
*
* Editor, eg:
* ImageEditor Image 属性编辑器
* DateTimeEditor DateTime 属性编辑器
* 参考 System.Drawing.Design.UITypeEditor
*
*
* UserControl 是具有 Text 属性和 TextChanged 事件的
* 只是被隐藏了而已
*
*/// 公开 Text 属性
[Browsable(true)]
[EditorBrowsable(EditorBrowsableState.Always)]
public override string Text
{
get
{
return base.Text;
}
set
{
if (base.Text != value)
{
base.Text = value;
this.OnTextChanged(new EventArgs());
}
}
}// 公开 TextChanged 事件
[Browsable(true)]
[EditorBrowsable(EditorBrowsableState.Always)]
public new event EventHandler TextChanged;
protected override void OnTextChanged(EventArgs e)
{
base.OnTextChanged(e); if (this.textBox1.Text != this.Text)
this.textBox1.Text = this.Text; if (this.TextChanged != null)
this.TextChanged(this, e);
}private void textBox1_TextChanged(object sender, EventArgs e)
{
if (this.Text != this.textBox1.Text)
{
this.Text = textBox1.Text;
}
}
(龍过鸡年) 这个回答的更好啊,可惜已经结贴了