从静态方法获取标签的文本

Getting Label's Text From Static Method

我正在尝试 label1.Text 我怎样才能从静态方法做到这一点 (Windows表格)

public static IntPtr hookProc(int code, IntPtr wParam, IntPtr lParam)
{         
    if (code >= 0 && wParam == (IntPtr)WM_KEYUP)
    {
        int vkCode = Marshal.ReadInt32(lParam);

        if (vkCode.ToString() == "117") //F6
        {                    
            MessageBox.Show(**label1.Text**)
        }

    return (IntPtr)1;
}

静态方法和属性无法访问其包含类型中的非静态字段和事件,并且它们无法访问任何对象的实例变量,除非它在方法参数中显式传递。

假设 label1 是实例变量,您应该将其文本作为参数之一传递给您的函数

public static IntPtr hookProc(int code, IntPtr wParam, IntPtr lParam, string labelText)

假设您使用 WinForms 并且 label1Label 控制 MyForm 您必须找到(正确的)instance of MyForm(如果我们打开了三个 MyForm 实例,我们应该使用哪个 label1?):

 using System.Linq;
 ...

 MessageBox.Show(Application
   .OpenForms
   .OfType<MyForm>()
   .Last()
  ?.label1
  ?.Text ?? "Some Default Value");

这里我们使用 last 打开的 MyForm 实例,如果存在则获取 label1;请注意,label1 必须从 hookProc 可访问 ,即 hookProcMyFormlabel1 中实现声明为 public.