关于KeyDown 事件问题

CraxyMouse 2009-03-06 12:43:40
我继承了UserControl写了一个控件

我现在添加了一个linklabel后就不能触发KeyDown事件了,移除后又可以正常触发了?
现不知道如何修改?望指点!


private void InitializeComponent()
{
LinkLabel lkBlog = new LinkLabel();
this.SuspendLayout();

//
// Designer
//
this.Name = "Designer";
this.MouseLeave += new System.EventHandler(this.Designer_MouseLeave);
this.Paint += new System.Windows.Forms.PaintEventHandler(this.Designer_Paint);
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Designer_MouseMove);
this.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.Designer_MouseDoubleClick);
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Designer_MouseDown);
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Designer_KeyPress);
this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Designer_MouseUp);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Designer_KeyDown);
this.KeyUp += new KeyEventHandler(Designer_KeyUp);


lkBlog.Location = new Point(10, 10);
lkBlog.AutoSize = true;
lkBlog.Text = "My Blog:http://blog.csdn.net/dunao(点击访问)";
lkBlog.Click += new EventHandler(lkBlog_Click);

this.Controls.Add(lkBlog);

this.ResumeLayout(false);

}
...全文
181 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
vivilionxgd 2009-03-10
  • 打赏
  • 举报
回复
你上次贴的SMS

COutgoingMessage 和CMessage
说明下
拜托 谢谢
CraxyMouse 2009-03-06
  • 打赏
  • 举报
回复

public class Designer : UserControl
{
public Designer()
{
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint, true);
//SetStyle(ControlStyles.ResizeRedraw, true);
this.BorderStyle = BorderStyle.FixedSingle;
InitializeComponent();
//设计文本编辑时textbox的属性
textBox.Visible = false;
textBox.Enabled = false;
textBox.BorderStyle = BorderStyle.None;
textBox.Multiline = true;

#if DEMO

#endif
this.Controls.Add(textBox);
this.AllowDrop = true;

this.BackColor = Color.White;
activeTool = new ToolBase();
_items = new DrawItemList();
}
ztenv 2009-03-06
  • 打赏
  • 举报
回复
两种方法:1、响应linklabel的KeyDown事件,并且触发你的控件保护方法:OnKeyDown();
2、重载ProcessCMDKey()方法,触发OnKeyDown();
CraxyMouse 2009-03-06
  • 打赏
  • 举报
回复
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDddd
CraxyMouse 2009-03-06
  • 打赏
  • 举报
回复
我是想在UserControl里捕获KeyDown事件!
不知道为什么他不触发
sxmonsy 2009-03-06
  • 打赏
  • 举报
回复
饺子87 2009-03-06
  • 打赏
  • 举报
回复
关注
长沙三毛 2009-03-06
  • 打赏
  • 举报
回复
估计你是想捕获窗体的Keypress事件,设置Form的属性KeyPreview=true看看
EveryCase 2009-03-06
  • 打赏
  • 举报
回复
顶~~~~~~~~~~~~~~~~
CraxyMouse 2009-03-06
  • 打赏
  • 举报
回复
问题解决!!
谢谢lianshaohua
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
KeyEventArgs kevent = new KeyEventArgs(keyData);
Designer_KeyDown(null, kevent);
Designer_KeyUp(null, kevent);
return base.ProcessCmdKey(ref msg, keyData);
}

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧