2012-07-14 66 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

相关问题