Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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#_Arrays_Forms_User Interface - Fatal编程技术网

C# 将用户输入从一个文本框从一个表单传送到另一个表单

C# 将用户输入从一个文本框从一个表单传送到另一个表单,c#,arrays,forms,user-interface,C#,Arrays,Forms,User Interface,我正在制作一个程序,用户可以在一个表单的文本框中输入值,然后数据将被传递到另一个表单。我认为最好的方法是将用户数据存储在几个数组中,然后将这些数组带过去,但目前我在这方面遇到了真正的困难。文本框也会在用户输入所需数量后创建,因此文本框最初不存在于页面上 string q = combobox1.SelectedItem.ToString(); int g = Convert.ToInt32(q); MessageBox.Show("I have added "

我正在制作一个程序,用户可以在一个表单的文本框中输入值,然后数据将被传递到另一个表单。我认为最好的方法是将用户数据存储在几个数组中,然后将这些数组带过去,但目前我在这方面遇到了真正的困难。文本框也会在用户输入所需数量后创建,因此文本框最初不存在于页面上

 string q = combobox1.SelectedItem.ToString();
        int g = Convert.ToInt32(q);
        MessageBox.Show("I have added " +(g-1) +" Films to the list");
        TextBox[] FilmTitle1 = new TextBox[int.Parse(q)];
        TextBox[] FilmBudget1 = new TextBox[int.Parse(q)];
        TextBox[] FilmBoxOffice1 = new TextBox[int.Parse(q)];
        TextBox[] FilmDirector1 = new TextBox[int.Parse(q)];
        TextBox[] FilmRtScore1 = new TextBox[int.Parse(q)];
        TextBox[] FilmGenre1 = new TextBox[int.Parse(q)];
        int y = 500;
        for (int i = 0; i < g; i++)
        {
            FilmTitle1[i] = new TextBox();
            FilmTitle1[i].Text = "Film Title";
            FilmTitle1[i].Size = new Size(162, 20);
            FilmTitle1[i].Location = new Point(106, y);
            FilmTitle1[i].Tag = 0;
            this.Controls.Add(FilmTitle1[i]);
            y= y + 40;

private void Createbar_Click(object sender, EventArgs e)
    {
        BarGraphCreation frm = new BarGraphCreation(FilmTitle.Text, FilmBudget.Text, FilmBoxOffice.Text, FilmDirector.Text, FilmGenre.Text, ft1, FilmBudget1.Text, FilmBoxOffice1.Text, FilmDirector1.Text, FilmGenre1.Text);
       frm.Show();
    }
string q=combobox1.SelectedItem.ToString();
int g=转换为32(q);
MessageBox.Show(“我在列表中添加了”+(g-1)+“电影”);
TextBox[]FilmTitle1=新的TextBox[int.Parse(q)];
TextBox[]FilmBudget1=新的TextBox[int.Parse(q)];
TextBox[]FilmBoxOffice1=新的TextBox[int.Parse(q)];
TextBox[]FilmDirector1=新的TextBox[int.Parse(q)];
TextBox[]FilmRtScore1=新的TextBox[int.Parse(q)];
TextBox[]FilmGenre1=新的TextBox[int.Parse(q)];
int y=500;
对于(int i=0;i
但是当我这样做的时候,它说文本框没有构造,尽管它允许它在程序中的任何其他地方。 非常感谢任何类型的帮助

公共课堂形式
public class Form
{
        // your code ...

        string q = combobox1.SelectedItem.ToString();
        int g = Convert.ToInt32(q);
        MessageBox.Show("I have added " +(g-1) +" Films to the list");
        public TextBox[] FilmTitle1 = new TextBox[int.Parse(q)];
        public TextBox[] FilmBudget1 = new TextBox[int.Parse(q)];
        public TextBox[] FilmBoxOffice1 = new TextBox[int.Parse(q)];
        public TextBox[] FilmDirector1 = new TextBox[int.Parse(q)];
        public TextBox[] FilmRtScore1 = new TextBox[int.Parse(q)];
        public TextBox[] FilmGenre1 = new TextBox[int.Parse(q)];
        int y = 500;
        for (int i = 0; i < g; i++)
        {
            FilmTitle1[i] = new TextBox();
            FilmTitle1[i].Text = "Film Title";
            FilmTitle1[i].Size = new Size(162, 20);
            FilmTitle1[i].Location = new Point(106, y);
            FilmTitle1[i].Tag = 0;
            this.Controls.Add(FilmTitle1[i]);
            y= y + 40;

    private void Createbar_Click(object sender, EventArgs e)
    {
        BarGraphCreation frm = new BarGraphCreation(this);
       frm.Show();
    }
}

public class BarGraphCreation
{
    // your code...

    Form form;
    public BarGraphCreation(Form form)
    {
        // ...
        this.form = form;
    }

    private void function()
    {
        // here you can work with your data like
        // form.FilmTitle1 and so on
    }
}
{ //你的代码。。。 字符串q=combobox1.SelectedItem.ToString(); int g=转换为32(q); MessageBox.Show(“我在列表中添加了”+(g-1)+“电影”); 公共文本框[]FilmTitle1=新文本框[int.Parse(q)]; 公共文本框[]FilmBudget1=新文本框[int.Parse(q)]; 公共文本框[]FilmBoxOffice1=新文本框[int.Parse(q)]; 公共文本框[]FilmDirector1=新文本框[int.Parse(q)]; 公共文本框[]FilmRtScore1=新文本框[int.Parse(q)]; 公共文本框[]FilmGenre1=新文本框[int.Parse(q)]; int y=500; 对于(int i=0;i
您应该避免将整个对象(如
TextBox
)传递给其他一些控件。一般的想法是您不希望总是只传递数据(信息)

由于
表单
布局是动态创建的,因此有关其
控件的信息应保存在某个地方,以便再次轻松访问

示例(包括数组和列表作为示例):

请注意,此部分使用
LINQ
将精确的属性(值)选择到两个数组中:

BarGraphCreation frm = new BarGraphCreation(
               FilmTitles.Select( a => a.Text).ToArray(),
               FilmBudget.Select( a => a.Text).ToArray());

请输入定义了
FilmTitle
BarGraphCreation()
构造函数的行。@TaTranskyMed发现它已经在那里了。..4行代码向下。@BugFinder:我只能看到构造函数的调用,但看不到它的定义。并且找不到
FilmTitle
(我只能看到
FilmTitle1
).TextBox是一个普通的windows控件-您无法获得TextBox的构造函数。因此
FilmTitle
是一个
TextBox
TextBox[]
string
public class BarGraphCreation : Form
{
    public BarGraphCreation(string[] Titles, string[] Budgets)
    { }
}
BarGraphCreation frm = new BarGraphCreation(
               FilmTitles.Select( a => a.Text).ToArray(),
               FilmBudget.Select( a => a.Text).ToArray());