首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Textbox对象引用

Textbox对象引用
EN

Stack Overflow用户
提问于 2013-03-15 08:11:25
回答 2查看 5.2K关注 0票数 0

如何在form1.cs文件的另一个自定义类中引用TextBox对象(比如textBox1)?

myclass中,我编写了textBox1,但intelliSense并没有建议我这样做。将私有改为公共并不能解决这个问题。

以下是form1.cs的示例代码

代码语言:javascript
复制
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;
    }
}
EN

回答 2

Stack Overflow用户

发布于 2013-03-15 08:40:54

如果您想在myClass作用域中直接引用它,则将其声明为static。

或者您需要Form1的实例,但这不允许您在类定义范围内声明对它的引用,您需要在构造函数(或类型初始化器)中实例化Form1的实例,您可以将其分配给myClass的成员。

代码语言:javascript
复制
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的当前实例,以下是实例化传递当前实例的多种方法之一

代码语言:javascript
复制
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;
    }
}
票数 4
EN

Stack Overflow用户

发布于 2013-03-15 08:46:47

嵌套类型与其包含的类型具有静态关系。这意味着默认情况下,它们不能访问包含类型的任何特定实例。如果希望内部类型访问包含类型中的某些字段,则必须将一个实例传递给内部类型。最常见的方法是将实例传递给嵌套类型的构造函数。

代码语言:javascript
复制
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;
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15422542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档