2017-02-20 64 views
0

我正在製作一個程序,用戶可以在一個表單上的文本框中輸入值,然後數據將轉入其他表單。我認爲這樣做的最好方法是將用戶數據存儲在多個數組中,然後將這些數組放在一邊,但此時我真的很麻煩。該文本框也被創建,一旦用戶輸入他們需要多少這樣的文本框不存在於頁面上最初將文本框中的用戶輸入從一種表單傳輸到另一種表單

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

但是,當我做這種方式它說,沒有構建文本框,儘管事實上,它允許它在程序的其他地方。 任何類型的幫助是極爲賞識

+0

請輸入'FilmTitle'定義的行和'BarGraphCreation()'構造函數。 – Tatranskymedved

+0

@Tatranskymedved已經在那裏..第四代碼線。 – BugFinder

+0

@BugFinder:我只能看到構造函數的調用,但不是它的定義。無法找到'FilmTitle'(我只能看到'FilmTitle1')。 – Tatranskymedved

回答

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

你應該避免將像TextBox整個對象到一些其他控件。總體思路是你永遠只會傳遞數據(信息)。

由於Form佈局是動態創建的,所以關於它的信息應該保存在某個地方,在這裏可以輕鬆地再次訪問。

實施例(包括陣列和列表作爲例子):

public class Form1 : Form 
{ 
    private TextBox[] FilmTitles; 
    private List<TextBox> FilmBudget = new List<Textbox>(); 

    //code removed for brevity 

    private void Button1_Click(/***/) 
    { 
     FilmBudget.Clear(); 

     int count = Convert.ToInt32(q); 
     FilmTitles = new TextBox[count]; 

     for (int i = 0; i < count; i++) 
     { 
      FilmTitles[i] = new TextBox() 
      { 
       Text = "Programmer in one day", 
       Size = new Size(162, 20) 
       // all other definitions 
      }; 


      FilmBudget.Add(new TextBox() 
      { 
       Text = "1225", 
       Size = new Size(162, 20) 
       // all other definitions 
      }; 

      this.Controls.Add(FilmTitles[i]); 
      this.Controls.Add(FilmBudget[i]); 

      //Now you are holding all the TB & text in global variables (arrays/lists) 
     } 
    }  

    private void Createbar_Click(object sender, EventArgs e) 
    { 

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

} 

其中:

public class BarGraphCreation : Form 
{ 
    public BarGraphCreation(string[] Titles, string[] Budgets) 
    { } 
} 

注意,該部分是使用LINQ選擇確切屬性(值)分爲2個數組:

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