关于SendMessage的问题????

AttaBoy 2003-09-24 11:27:28
我使用导入API,想像一个文本框控件发送WM_LBUTTONDBCLICK事件.代码如下:

WinAPI.SendMessage(textbox1.Handle,0x203,0,0);

但通过委托添加的处理方法并没有什么处理,我重载TextBox的OnDoubleClick事件,发现其也并未处理[以上通过直接双击textbox1控件均触发],但我重载其WndProc方法:

protected override void WndProc(ref Message m)
{
if(m.Msg == 0x203)
{
MessageBox.Show("Double Click");
}

base.WndProc (ref m);
}

发现能够接受到SendMessage发送的消息,而且直接双击textbox1控件也能确发此消息.

如何解决??我需要通过直接在外部触发textbox1的DoubleClick事件.谢谢大侠指教.
...全文
90 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
AhBian 2003-09-25
  • 打赏
  • 举报
回复
既然已继承了 TextBox 的控件,在继承的控件代码中添加上述方法。外部调用即可。
AhBian 2003-09-25
  • 打赏
  • 举报
回复

public void PerformDoubleClick()
{
this.OnDobouleClick(EventArgs.Empty);
}
Azmore 2003-09-25
  • 打赏
  • 举报
回复
呵呵,其实很简单,你发送完了之后再单击一下TextBox控件,就可以发现事件处理执行了。
原因在于你还得再发送一个WM_LBUTTONUP消息。如下:

const int WM_LBUTTONDBCLICK = 0x203;
const int WM_LBUTTONUP = 0x202;

private void button1_Click(object sender, System.EventArgs e)
{
if(Win32API.SendMessage(textBox1.Handle,WM_LBUTTONDBCLICK ,0x1,0x0))
{
Win32API.SendMessage(textBox1.Handle,WM_LBUTTONUP ,0x1,0x0);
}
}


cdbnzc 2003-09-25
  • 打赏
  • 举报
回复
尝试一下用Spy跟跟看,可能是窗口句柄不对,我现在正在为此事烦恼呢
AttaBoy 2003-09-25
  • 打赏
  • 举报
回复
To AhBian,我继承只是为了做实验,实际使用时并不能继承的
angelior 2003-09-25
  • 打赏
  • 举报
回复
:_)

111,098

社区成员

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

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

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