文本框对象参考[关闭](Textbox Object Reference [closed])

2019-10-17 20:18发布

我怎么能引用TextBox对象(说textBox1中)在另一个自定义类在Form1.cs文件?

myclass ,我已经写了textBox1 ,但智能感知不建议给我。 更改私人公众并不能解决问题。

下面是Form1.cs中的示例代码

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

        class myclass {
            // What can I do to make texbox1 show up in intelliSense here? 
            // textBox1
        }

        public System.Windows.Forms.TextBox textBox1;
    }
}

Answer 1:

如果您想直接的范围内引用它myClass ,然后把它声明为静态的。

或者你需要的实例Form1 ,但不会让你声明的类定义范围,对它的引用,您需要实例的实例Form1的构造(或类型初始化),您可以将其分配给成员的myClass

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

        class myclass {
            TextBox textBox3=Form1.textBox1;
            TextBox textBox4;
            Form1 form1;

            public myclass() {
                form1=new Form1();
                textBox4=form1.textBox2;
            }
        }

        static public System.Windows.Forms.TextBox textBox1;
        public System.Windows.Forms.TextBox textBox2;
    }
}

更新:

对于当前实例的有关Form1 ,下面是各种方式传递当前实例之一 ,当实例化myclass

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

            textBox1=textBox2; // demonstration for "static make sense"

            var x=new Form1.myclass {
                form1=this
            };

            // now x.textBox3 is reference to textBox2
        }

        public class myclass {
            TextBox textBox3=Form1.textBox1;
            TextBox textBox4;
            internal Form1 form1;

            public myclass() {
                // form1=new Form1();
                textBox4=form1.textBox2;
            }
        }

        static public System.Windows.Forms.TextBox textBox1;
        public System.Windows.Forms.TextBox textBox2;
    }
}


Answer 2:

嵌套类型必须包含他们的类型的静态关系。 这意味着,在默认情况下,他们没有访问包含类的任何特定实例。 如果你想在内部类型从包含类型访问某些领域,你必须一个实例传递给内部类。 最常见的方式是将一个实例传递到嵌套式的构造。

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

    class myclass {
        private Form1 parent;

        public myclass(Form1 parent) {
            this.parent = parent;
        }

        public void DoSomething() {
            parent.textBox1.Text = "Hello, World!";
        }
    }

    public System.Windows.Forms.TextBox textBox1;
}


文章来源: Textbox Object Reference [closed]