2012-07-14 67 views
0

我有一個很大的項目,我正在經歷非常緩慢的過程。將文本框中的用戶輸入顯示爲標籤

該項目在C#中用於通過Visual Studio 2010的Windows主窗體程序的主要目標是它允許用戶在一年內輸入到文本框中。當用戶按下回車鍵時,電影列表將出現在兩個分開的列表框中;這些電影按用戶輸入的年份排序。第一個列表框將顯示低於用戶輸入內容的電影列表,第二個列表框將顯示等於和大於用戶輸入年份的電影列表。列表框上方還會顯示兩個標籤,用於顯示用戶輸入的年份(換句話說)。

這是我現在遇到的第一個問題;我如何才能將用戶輸入到文本框中的數據顯示在兩個單獨的標籤中?任何和所有對此的迴應將不勝感激。

現在我只是從窗體上的控件編寫的編碼的基本殼;這是我迄今開始與:

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

     private void label1_Click(object sender, EventArgs e) 
     { 
      //Named "Enter a Year" 
     } 

     private void textBox1_TextChanged(object sender, EventArgs e) 
     { 

     } 

     private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
     { 

     } 

     private void label2_Click(object sender, EventArgs e) 
     { 

     } 

     private void listBox2_SelectedIndexChanged(object sender, EventArgs e) 
     { 

     } 


     private void label3_Click(object sender, EventArgs e) 
     { 

     } 

    } 
} 
+0

你曾經開發了C#什麼?你在互聯網上搜索過一個教程嗎?這是一項非常簡單的任務,很難弄清楚如何完成它。 – 2012-07-14 02:56:52

+0

@AndreCalil如果你有任何可用的鏈接,我會非常感激。 – Rocky 2012-07-14 03:48:20

回答

2

因爲這是作業,我會提供一個微調,而不是一個解決方案。

大概你有兩個標籤沒有顯示在你的代碼中。我會指定他們label1label2

當你的文本框變化的文字,你在你的代碼顯示了事件處理程序將被觸發

textBox1_TextChanged 

你可以使用每兩個標籤的Text屬性設置標籤的文本,基於textBox1在TextChanged事件觸發的時間點的內容。一般形式是

labelSome = "Some Text Here"; 

請注意,雖然填充列表框的方式會導致混淆行爲。如果我想鍵入2001,則TextChanged事件將觸發四次,每次觸發一次2001。實際文本將分別爲2,20,200,2001。如果你開始更新每個事件的列表框,第一個事件將會讓你在第二年之前和之後分配電影。等等。

更好的用戶界面將是提供一個搜索按鈕,既可以填充列表框,也可以更新標籤的文本。

2

您應該能夠訪問後面代碼中的控件。智能感知通常會列出控件鍵入他們,使相當簡單的任務:

private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
    Label1.Text = textBox1.Text; 
    Label2.Text = textBox1.Text; 
} 

注:這可能不應該是你的最終代碼。從閱讀您的要求,似乎只要文本框發生更改,標籤就不應該更新,而是在另一個事件中更新。

+0

從「家庭作業」標籤的幫助:「家庭作業」意味着問題是請求幫助完成學校作業。這讓潛在的回答者知道他們應該引導學生解決問題,而不應該簡單地顯示完整的答案。' – 2012-07-14 03:00:28

+0

好點。我只是做了一個編輯,我不認爲這應該是最終的代碼。 – 2012-07-14 03:03:03

+0

感謝Eric和Dan的輸入。我在每個標籤控件中都有這個特定的代碼,但是我被卡在瞭如何包含常規txt;例如「在{0}之前發佈的電影」和「在{0}中發佈的電影」或「 – Rocky 2012-07-14 03:19:03

0

根據您對DanT的評論。你可以嘗試使用String。格式Composite Formating

從鏈接:

複合格式字符串和對象列表中被用作支持複合格式設置功能方法的參數。複合格式字符串由零個或多個固定文本運行與一個或多個格式項目混合組成。固定文本是您選擇的任何字符串,並且每個格式項目都對應於列表中的對象或盒式結構。複合格式功能返回一個新的結果字符串,其中每個格式項目被列表中相應對象的字符串表示替換。

0

試試這個:

textBox.TextChanged += (sender, e) => 
    { 
     label2.Text = label1.Text = ((TextBox)sender).Text; 
    }; 
+0

*個人*我發現它比DanT提出的基本相同的解決方案更易讀。一行中的匿名代理和組合賦值可在源文件中保存幾個字節,但代價是對學生來說特別重要。 – 2012-07-14 15:34:59

相關問題