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)
        {

        }

    }
}
4

4 回答 4

2

由于这是家庭作业,因此我将提供轻推而不是解决方案。

大概您的代码中没有显示两个标签。我将指定它们label1label2.

当文本框中的文本发生更改时,将触发您在代码中显示的事件处理程序

textBox1_TextChanged

您可以使用两个标签中的每一个的 Text 属性来设置标签的文本,具体取决于textBox1触发 TextChanged 事件时的内容。一般形式是

labelSome = "Some Text Here";

请注意,尽管以相同的方式填充列表框会导致令人困惑的行为。如果我想输入 2001,TextChanged 事件将触发四次,每个2 0 0 1. 实际文本将分别为, 2, 20, 。如果您开始更新每个事件的列表框,第一个事件将让您将电影划分为第 2 年之前和之后的电影。依此类推。2002001

更好的用户界面是提供一个搜索按钮,该按钮既填充列表框又更新标签文本。

于 2012-07-14T02:57:39.783 回答
2

您应该能够访问后面代码中的控件。Intellisense 通常会在您键入控件时列出它们并使任务变得非常简单:

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

注意:这可能不应该是您的最终代码。从阅读您的要求来看,似乎标签不应在文本框更改时更新,而应在另一个事件期间更新。

于 2012-07-14T02:59:40.423 回答
0

根据您对 DanT 的评论。您可以尝试将 String.Format 与复合格式一起使用

来自链接:

复合格式字符串和对象列表用作支持复合格式功能的方法的参数。复合格式字符串由零个或多个固定文本与一个或多个格式项混合而成。固定文本是您选择的任何字符串,每个格式项对应于列表中的一个对象或盒装结构。复合格式化功能返回一个新的结果字符串,其中每个格式项都替换为列表中相应对象的字符串表示形式。

于 2012-07-14T03:27:49.560 回答
0

尝试这个:

textBox.TextChanged += (sender, e) =>
    {
        label2.Text = label1.Text = ((TextBox)sender).Text;
    };
于 2012-07-14T04:34:36.840 回答