非静态字段、方法或属性Label1 Color更改需要对象引用
本文关键字:Color 对象引用 Label1 属性 字段 静态 方法 | 更新日期: 2023-09-27 18:21:32
我已经尝试修复这个问题很长一段时间了,我不知道这是我的代码还是在VS中找不到它。我已经尝试了所有的东西,我需要的帮助
我得到的错误:
非静态字段需要对象引用,方法或属性'WindowsFormsApplication3.Form1.label1'c:''users''zmatar''documents''visual演播室2013''projects''windowsformsapplication3''windowsformsapplication3 ''form1.cs
代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net.NetworkInformation;
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public static void PingTest()
{
const int timeout = 120;
const string data = "[012345678901234567890123456789]";
var buffer = Encoding.ASCII.GetBytes(data);
PingReply reply;
var success = true; // Start out optimistic!
var sender = new Ping();
// Add as many hosts as you want to ping to this list
var hosts = new List<string> { "www.google.com", "www.432446236236.com" };
// Ping each host and set the success to false if any fail or there's an exception
foreach (var host in hosts)
{
try
{
reply = sender.Send(host, timeout, buffer);
if (reply == null || reply.Status != IPStatus.Success)
{
// We failed on this attempt - no need to try any others
success = false;
break;
}
}
catch
{
success = false;
}
}
if (success)
{
label1.ForeColor = System.Drawing.Color.Red;
}
else
{
label1.ForeColor = System.Drawing.Color.Red;
}
}
private void Form1_Load(object sender, EventArgs e)
{
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
PingTest();
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Close();
}
private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
}
}
}
label1
是实例变量。您正试图在static
方法中设置它。
如果没有要访问的实例,static
方法就无法访问实例成员。若要解决此问题,请从方法中删除static
,或存储该类的实例以供以后使用:
public class Form1 : Form
{
static Form1 instance = null;
public Form1()
{
InitializeComponent();
instance = this;
}
private static void MyMethod()
{
if (instance != null)
instance.label1.Color = Color.White; //Or whatever
}
}