Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 文本框对象引用_C#_Winforms_Textbox - Fatal编程技术网

C# 文本框对象引用

C# 文本框对象引用,c#,winforms,textbox,C#,Winforms,Textbox,如何在form1.cs文件的另一个自定义类中引用TextBox对象(如textBox1) 在我的课堂上,我写了textBox1,但intelliSense没有向我推荐。将私有变为公共并不能解决这个问题 下面是form1.cs的示例代码 namespace Calculator { public partial class Form1: Form { public Form1() { // InitializeComponent();

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

在我的课堂上,我写了textBox1,但intelliSense没有向我推荐。将私有变为公共并不能解决这个问题

下面是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;
    }
}

如果您想在myClass的范围内直接引用它,那么将其声明为静态

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

更新:

对于Form1的当前实例,以下是实例化myclass时传递当前实例的各种方法之一


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

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

请让您的问题更清楚、更容易理解,以便我们能够回答。请发布一些代码。顺便说一句,执行Robert Harvey所说的操作的首选方式是向我们展示一些代码。如果我理解正确,您可以在属性窗口中将控件的设计类别中的修改器从私有更改为公共。这应该可以让你从其他地方了解到。可能只是复制用于无意识复制和粘贴的代码,对于将来有类似问题但并非完全相同问题的访问者来说不是很有用。对于这种长度的代码块,应该有某种解释来描述代码的作用。我正在键入并保存。@O.R.Mapper很酷,Ken是第一个回答这个重新打开的问题并详细说明的人。。。我们中的一些人需要一点时间。@Jeremythonpson:最好在作者还在的时候说。SO上有一个尚未完成但已被接受的答案存根,这对OP和验收很有帮助,但由于缺乏解释,对其他任何人都没有用处。尽管如此,很好的解释-+1:-@Ken Kin您的解决方案不会回答任何问题。有疑问的是,用户希望引用Form1的已用实例中的textbox。您对静态TetxBox和表单的newEmpty实例的引用。我认为唐克比的答案是正确的
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;
    }
}
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;
}