【发布时间】:2010-01-15 09:15:02
【问题描述】:
我的 form1 类包含一堆需要保存的数据,因此一次只能运行一个实例。
public partial class Form1 : Form
{
public string form1string = "I really need to save this data";
public Form1()
{
InitializeComponent();
// Even if I pass my form1 object here I still can't access it from
// the upcoming static methods.
InterceptKeys hook = new InterceptKeys();
}
InterceptKeys,不是我的代码,里面包含了一堆键盘钩子需要的静态方法。
private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
{
int trueKeyPressed = Marshal.ReadInt32(lParam);
if (Form1.mirror)
{
Form1.newKeyPress(trueKeyPressed);
return (IntPtr)1;
}
}
return CallNextHookEx(_hookID, nCode, wParam, lParam);
}
因为 HookCallBack 方法是静态的,所以 Form1.newKeyPress() 也需要是静态的。
但是如果 newKeyPress 是静态的,我就无法访问我需要的数据!我不想在这里声明一个新的 form1 对象,因为这会给我不同版本的数据。对吗?
我不是面向对象的专家。我应该如何格式化它,以确保所有 InterceptKey 的 form1 方法调用都转到我想要的 form1 对象?
谢谢,如果您需要更多信息,请告诉我!
【问题讨论】:
-
我认为您将 AKA 与即大声笑混淆了
-
因为 HookCallBack 方法是静态的,所以 Form1.newKeyPress() 也需要是静态的。 - 不正确 。如果您想使用 Form1 类名作为调用者,newKeyPress 应该是静态的。但总的来说,男人很难理解你想要什么......你能简化/澄清你的问题吗?你的目标是什么?
-
@cksubs...这真的取决于你在哪里!这是早上在这里大声笑
-
除非我创建一个新的 form1 对象,否则它必须是静态的,对吗?我不想那样做,所以它必须是静态的?
-
如何将
InterceptKeys与HookCallback联系起来?
标签: c# oop formatting