我在这里有一个很大的项目,我经历的很慢。
通过Visual Studio 2010,这个项目在C#中用于Windows主表单程序的主要目的是允许用户在一年内输入文本框。当用户按下回车键时,电影列表将出现在两个单独的列表框中;这些电影按用户输入的年份排序。第一个列表框将显示低于用户输入的电影列表,第二个列表框将显示等于和大于用户输入年份的电影列表。列表框上方还有两个标签,用于显示用户输入的年份(换句话说)。
这是我现在遇到的第一个问题;如何将用户输入文本框的数据显示在两个单独的标签中?任何和所有对此的回应将不胜感激。
现在我只是从表单上的控件中编写了基本的编码shell;这是我到目前为止开始的:
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 :(得分:2)
由于这是作业,我会提供一个轻推而不是解决方案。
据推测,您的代码中没有显示两个标签。我会指定它们label1
和label2
。
当文本框中的文本发生更改时,您的代码中显示的事件处理程序将被触发
textBox1_TextChanged
您可以使用两个标签中每个标签的Text属性来设置标签的文本,具体取决于TextChanged事件触发时的textBox1
内的内容。一般形式是
labelSome = "Some Text Here";
请注意,以相同的方式填充列表框会导致混乱的行为。如果我想输入2001,TextChanged事件将触发四次,每次2
0
0
1
。实际文本将分别为2
,20
,200
,2001
。如果您开始更新每个事件的列表框,则第一个事件会让您在第2年之前和第2年之间分割电影。依此类推。
更好的用户界面是提供一个搜索按钮,既可以填充列表框,也可以更新标签文本。
答案 1 :(得分:2)
您应该能够访问后面代码中的控件。 Intellisense通常会在您键入控件时列出控件,并使任务非常简单:
private void textBox1_TextChanged(object sender, EventArgs e)
{
Label1.Text = textBox1.Text;
Label2.Text = textBox1.Text;
}
注意:这可能不应该是您的最终代码。从阅读您的要求来看,似乎标签不应在文本框更改时更新,而是在另一个事件期间更新。
答案 2 :(得分:0)
根据您对DanT的评论。您可以尝试将String.Format与Composite Formating
一起使用来自链接:
复合格式字符串和对象列表用作支持复合格式设置功能的方法的参数。复合格式字符串由零个或多个固定文本运行与一个或多个格式项混合组成。固定文本是您选择的任何字符串,每个格式项对应于列表中的对象或盒装结构。复合格式化功能返回一个新的结果字符串,其中每个格式项都被列表中相应对象的字符串表示替换。
答案 3 :(得分:0)
试试这个:
textBox.TextChanged += (sender, e) =>
{
label2.Text = label1.Text = ((TextBox)sender).Text;
};