私はかなり長い間これを修正しようとしてきましたが、それが私のコードなのか、それともVSで見つからないのかわかりません。私は文字通りすべてを試しましたが、助けが必要です
私が得るエラー:
非静的フィールド、メソッド、またはプロパティにはオブジェクト参照が必要です 'WindowsFormsApplication3.Form1.label1' c:\ users \ zmatar \ documents \ Visual Studio 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
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加