Considerar:
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();
}
}
}
¿Por qué ocurre este error?
Se requiere una referencia de objeto para el campo, método o propiedad no estático 'WindowsApplication1.Form1.setTextboxText (int)
Para este caso, donde desea obtener un Control de un formulario y recibe este error, entonces tengo un pequeño bypass para usted.
Vaya a su Program.cs y cambie
a
Ahora puede acceder a un control con
Además: no olvide establecer su Nivel de acceso de control en Público.
Y sí, lo sé, esta respuesta no se ajusta a la persona que llama, pero sí a los googlers que tienen este problema específico con los controles.
fuente
Tu método debe ser estático
fuente
this.InvokeRequired
ythis.Invoke
) y, por lo tanto, no puede hacerse estático.Gracias a @COOLGAMETUBE por informarme de lo que terminó funcionando para mí. Su idea era buena, pero tuve un problema cuando se llamó a Application.SetCompatibleTextRenderingDefault después de que el formulario ya se había creado. Entonces, con un pequeño cambio, esto está funcionando para mí:
fuente
Desde mi punto de vista, le da un valor nulo a un cuadro de texto y devuelve un
ToString()
ya que es un método estático. Puede reemplazarlo conConvert.ToString()
eso puede habilitar el valor nulo.fuente
De hecho, recibí este error porque estaba buscando en InnerHtml algún contenido generado dinámicamente, es decir, un control que es runat = server.
Para resolver esto, tuve que eliminar la palabra clave "estática" en mi método, y funcionó bien.
fuente