你不用知道包含控件的窗体是谁,你只要知道Form.ActiveForm有没有你的控件就可以了:
foreach (Control ctl in Form.ActiveForm.Controls)
{
if (ctl is 你的控件所属的类名)//如if (ctl is TextBox)
//下面写你的处理代码
}
public class KeyBoardMessageFilter : IMessageFilter
{
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == 256)
{
m_objC.HandleKeyPress(Convert.ToChar(m.WParam.ToInt64()));
}
return false;
}
}
你不用知道包含控件的窗体是谁,你只要知道Form.ActiveForm有没有你的控件就可以了:
foreach (Control ctl in Form.ActiveForm.Controls)
{
if (ctl is 你的控件所属的类名)//如if (ctl is TextBox)
//下面写你的处理代码
}
//================clsHold.cs================
using System;
using System.Windows.Forms;
namespace cmnTest
{
/// <summary>
/// clsHold 的摘要说明。
/// </summary>
public class clsHold:IMessageFilter
{
bool rtnValue=false;
const int WM_KEYDOWN = 0x100;
const int VK_DELETE=0x2E;
public clsHold()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public bool PreFilterMessage(ref Message m)
{
if(m.Msg == WM_KEYDOWN)
{
try
{
if (frmHold.ActiveForm is frmHold)
if (m.HWnd==((frmHold)frmHold.ActiveForm).textBox1.Handle)
if ((int)m.WParam==VK_DELETE)
((frmHold)frmHold.ActiveForm).textBox1.Text+="D";
}
catch
{}
//MessageBox.Show(m.WParam.ToString());
rtnValue=true;
}
else
rtnValue=false;