我正在尝试根据Control类和msctls_hotkey32 win32类在C#中使用热键控件。我有什么作品,虽然它并不完美:
class Hotkey : TextBox
{
protected override CreateParams CreateParams
{
get
{
CreateParams parms = base.CreateParams;
parms.ClassName = "msctls_hotkey32";
return parms;
}
}
// (some other p/invoke stuff for HKM_SETHOTKEY, etc.)
}
优点是它简单而且有效。缺点是它从TextBox继承了一组不适用于此控件的功能。所以我的问题是 - 如果没有重新发明轮子,有没有更好的方法呢?
感谢。
答案 0 :(得分:1)
您始终可以直接从System.Windows.Forms.Control继承。然后当然添加您想要支持的特定方法和属性。您需要适当地设置控件样式才能工作,这是一个快速示例。
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
class HotKey : Control
{
public HotKey()
{
SetStyle(ControlStyles.UserPaint, false);
}
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ClassName = "msctls_hotkey32";
return cp;
}
}
}
}