非静态字段、方法或属性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 Color更改需要对象引用

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
   }
}