了个自定义控件(windows)后,如何定义一个自定义事件,已经如何将该事件的执行和调用页相联系?
如写了个包含一个label和一个textbox的控件,在调用页上拖了2个,分别为aaa和bbb,那如何才能通过回车textbox,分别将焦点置换为另一个控件。或能设置一个方法来在按了回车后触发一个自定义的事件。 问题点数:20、回复次数:7Top
1 楼zhouyong2052(晴天)回复于 2004-12-02 11:59:57 得分 0
up
用Tab键不行么?Top
2 楼redcomet2004(光荣的罗马)回复于 2004-12-02 12:04:28 得分 0
焦点只是举个例,详细应用中可没那么简单了,所以要做个可以调用任何方法函数的通用事件Top
3 楼yblcgw(黑马之王)回复于 2004-12-02 12:07:19 得分 0
在KeyPress事件中添加如下
private void bbb_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if(e.KeyChar==13)//判断如果是回车
{
aaa.Focus();//aaa控件获得输入焦点
}
}
记得接贴,我现在穷,否则鄙视你。见你贴不回Top
4 楼DotNetFreak()回复于 2004-12-02 12:08:38 得分 20
//在控件里
public delegate void TextBoxEnterPressedHandler(string text);
public class UserControl1 : System.Windows.Forms.UserControl
{
private System.Windows.Forms.Label label1;
private System.Windows.Forms.TextBox textBox1;
private void InitializeComponent()
{
//...
this.textBox1.KeyUp += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyUp);
//...
}
public event TextBoxEnterPressedHandler TextBoxEnterPressed;
private void textBox1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
if( e.KeyCode==Keys.Enter && TextBoxEnterPressed!=null )
TextBoxEnterPressed( textBox1.Text );
}
public void SetFocus()
{
this.textBox1.Focus();
}
}Top
5 楼DotNetFreak()回复于 2004-12-02 12:10:10 得分 0
//在应用程序里
public class Form1 : System.Windows.Forms.Form
{
private WindowsControlLibrary1.UserControl1 aaa;
private WindowsControlLibrary1.UserControl1 bbb;
public Form1()
{
aaa.TextBoxEnterPressed += new WindowsControlLibrary1.TextBoxEnterPressedHandler(aaa_TextBoxEnterPressed);
bbb.TextBoxEnterPressed += new WindowsControlLibrary1.TextBoxEnterPressedHandler(bbb_TextBoxEnterPressed);
}
private void aaa_TextBoxEnterPressed(string text)
{
bbb.SetFocus();
}
private void bbb_TextBoxEnterPressed(string text)
{
aaa.SetFocus();
}
}Top
6 楼redcomet2004(光荣的罗马)回复于 2004-12-02 13:10:03 得分 0
OK,可以了,谢谢楼上Top
7 楼sniperfox(飞翔的心)回复于 2005-01-10 17:22:47 得分 0
不错。好用Top




