考虑:
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//int[] val = { 0, 0};
int val;
if (textBox1.Text == "")
{
MessageBox.Show("Input any no");
}
else
{
val = Convert.ToInt32(textBox1.Text);
Thread ot1 = new Thread(new ParameterizedThreadStart(SumData));
ot1.Start(val);
}
}
private static void ReadData(object state)
{
System.Windows.Forms.Application.Run();
}
void setTextboxText(int result)
{
if (this.InvokeRequired)
{
this.Invoke(new IntDelegate(SetTextboxTextSafe), new object[] { result });
}
else
{
SetTextboxTextSafe(result);
}
}
void SetTextboxTextSafe(int result)
{
label1.Text = result.ToString();
}
private static void SumData(object state)
{
int result;
//int[] icount = (int[])state;
int icount = (int)state;
for (int i = icount; i > 0; i--)
{
result += i;
System.Threading.Thread.Sleep(1000);
}
setTextboxText(result);
}
delegate void IntDelegate(int result);
private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
}
为什么会出现这个错误?
非静态字段、方法或属性“WindowsApplication1.Form1.SetTextBoxText(int)”需要对象引用
在这种情况下,您想要获得一个窗体的控制,但却收到了这个错误,那么我有一个小的旁路给您。
转到您的程序.cs并更改
Application.Run(new Form1());
至
public static Form1 form1 = new Form1(); // Place this var out of the constructor
Application.Run(form1);
现在可以使用
Program.form1.<Your control>
另外:不要忘记将控制访问级别设置为public。
是的,我知道,这个答案不适合提问者,但它适合谷歌人谁有这个具体的控制问题。
看起来您正在从静态方法(特别是sumdata
)调用非静态成员(属性或方法,特别是settextboxtext
)。您需要执行以下操作:
>
还将被调用成员设置为静态:
static void setTextboxText(int result)
{
// Write static logic for setTextboxText.
// This may require a static singleton instance of Form1.
}
在调用方法内创建form1
的实例:
private static void SumData(object state)
{
int result = 0;
//int[] icount = (int[])state;
int icount = (int)state;
for (int i = icount; i > 0; i--)
{
result += i;
System.Threading.Thread.Sleep(1000);
}
Form1 frm1 = new Form1();
frm1.setTextboxText(result);
}
传入form1
的实例也是一种选择。
使调用方法成为非静态实例方法(form1
):
private void SumData(object state)
{
int result = 0;
//int[] icount = (int[])state;
int icount = (int)state;
for (int i = icount; i > 0; i--)
{
result += i;
System.Threading.Thread.Sleep(1000);
}
setTextboxText(result);
}
有关此错误的详细信息可在MSDN上找到。
我有一个控制器操作,它在Firefox本地和生产环境中都能正常工作,在IE本地工作,但在生产环境中不能正常工作。以下是我的控制器操作: 这是我在IE中得到的堆栈跟踪: 错误。处理您的请求时出错。系统。非静态方法需要一个目标。at系统。系统上的reflection . runtimemethodinfo . check consistency(对象目标)。reflection . runtimeme
我有一个私有int数组,我需要以某种方式找到长度,但在静态类下无法做到这一点。我必须保持类的静态,是否可以添加其他方法来将a.length更改为其他方法? 该问题是由a.length引起的。
问题内容: 到目前为止,我有以下代码: } 当我尝试在末尾设置double 时,出现错误消息“无法对非静态方法进行静态引用”。它说解决方法是也使该方法静态化,但是我的教授告诉我不要将该字段静态化。有一个简单的解决方案我只是想念吗? 问题答案: 静态方法属于该类,非静态方法属于该类的 实例 。 当您从呼叫时,您会收到错误消息,因为它与任何实例都没有关联。 您需要创建该类的实例: 然后,您可以调用实例
本文向大家介绍PowerShell中调用.NET对象的静态方法、静态属性和类方法、类属性例子,包括了PowerShell中调用.NET对象的静态方法、静态属性和类方法、类属性例子的使用技巧和注意事项,需要的朋友参考一下 本文介绍在PowerShell中如何使用.NET对象,PowerShell内在支持大量的.NET对象。 调用类的静态方法 用中括号把类的名称括起来,然后输入两个冒号,然后再输入方法
我的应用程序中有两个类: runner类包含我的方法,我尝试在该方法中从Tasks类调用一个方法: 在我的Runner中,当我试图调用Tasks类中的createTaskList()方法时,我得到以下错误: 我该怎么解决这个?
我们可以把一个方法赋值给类的函数本身,而不是赋给它的 "prototype"。这样的方法被称为 静态的(static)。 在一个类中,它们以 static 关键字开头,如下所示: class User { static staticMethod() { alert(this === User); } } User.staticMethod(); // true 这实际上跟直接将其