4

可能重复:
非静态字段、方法或属性“WindowsApplication1.Form1.setTextboxText(int)”需要对象引用

我正在创建一个 IP 跟踪器,它将连接到网络并从文本框中输入值(IP)并接收结果。这是代码。

 using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Xml;

    namespace geoIP
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                iptrace();
            }

             public static string iptrace()
            {
                XmlDocument xmldoc = new XmlDocument();
                XmlNodeList xmlnode;
                int i;

                xmldoc.Load("http://freegeoip.net/xml/" + textBox1.Text);
                xmlnode = xmldoc.GetElementsByTagName("response");
                for (i = 0; i < xmlnode.Count; i++)
                {
                    xmlnode[i].ChildNodes.Item(0).InnerText.Trim();
                    label1.Text = "Ip Address: " + xmlnode[i].ChildNodes.Item(0).InnerText.Trim();
                    label2.Text = "Country Code: " + xmlnode[i].ChildNodes.Item(1).InnerText.Trim();
                    label3.Text = "Country Name: " + xmlnode[i].ChildNodes.Item(2).InnerText.Trim();
                    label4.Text = "Region Code: " + xmlnode[i].ChildNodes.Item(3).InnerText.Trim();
                    label5.Text = "Region Name: " + xmlnode[i].ChildNodes.Item(4).InnerText.Trim();
                    label6.Text = "City: " + xmlnode[i].ChildNodes.Item(5).InnerText.Trim();
                    label7.Text = "Zip Code: " + xmlnode[i].ChildNodes.Item(6).InnerText.Trim();
                    label8.Text = "Latitude: " + xmlnode[i].ChildNodes.Item(7).InnerText.Trim();
                    label9.Text = "Longitude: " + xmlnode[i].ChildNodes.Item(8).InnerText.Trim();
                    label10.Text = "Metro Code: " + xmlnode[i].ChildNodes.Item(9).InnerText.Trim();
                }

            }


 }
}`

它给了我错误

非静态字段、方法或属性“geoIP.Form1.textBox1”需要对象引用

4

3 回答 3

4

您的textBox1控件被声明为类的成员,但在static函数内部使用。这是一个问题。

要解决此问题,您需要声明方法non static

public string iptrace()
{
   ...
}
于 2012-07-04T20:43:33.983 回答
0

staticiptrace()方法声明中删除。

textBox1您正在尝试从静态方法访问非静态(实例)成员。

编辑:

此外,将方法声明更改为public void iptrace(). 由于您没有return <some string value>;语句(并且在您的情况下不需要任何语句),C# 编译器将反对。通过具有void返回类型,您声明该方法不返回任何值。

编辑2:

您还应该将方法访问更改为private void iptrace(). 没必要公开。

最后,检查.NET Guidelines for Names。例如,方法和命名空间应该是Pascal Cased

于 2012-07-04T20:43:29.840 回答
0

改变textBox1.TextForm1.ActiveForm.textBox1.Text

于 2012-07-04T20:43:33.917 回答