从静态方法获取标签的文本
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 并且 label1
是 Label
控制 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
可访问 ,即 hookProc
在 MyForm
或 label1
中实现声明为 public
.
我正在尝试 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 并且 label1
是 Label
控制 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
可访问 ,即 hookProc
在 MyForm
或 label1
中实现声明为 public
.