0

ここには大きなプロジェクトがあり、非常にゆっくりと進めています。

Visual Studio 2010 を使用した Windows メイン フォーム プログラムの C# でのこのプロジェクトの主な目的は、ユーザーが年をテキスト ボックスに入力できるようにすることです。ユーザーが Enter キーを押すと、映画のリストが 2 つの別々のリスト ボックスに表示されます。これらの映画は、ユーザーが入力した年で並べ替えられます。最初のリスト ボックスには、ユーザーが入力した年よりも古い映画のリストが表示され、2 番目のリスト ボックスには、ユーザーが入力した年以降の映画のリストが表示されます。また、ユーザーが入力した年を表示するリスト ボックスの上に 2 つのラベルがあります (特に)。

これは私が今抱えている最初の問題です。ユーザーがテキスト ボックスに入力したデータを 2 つの別々のラベルに表示するにはどうすればよいですか? これに対するすべての応答は非常に高く評価されます。

現在、フォーム上のコントロールから記述されたコーディングの基本的なシェルしかありません。これは私がこれまでに始めたものです:

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

これは宿題なので、解決策ではなくナッジを提供します。

コードに表示されていないラベルが 2 つあるとします。私はそれらlabel1を指定しますlabel2

テキストボックス内のテキストが変更されると、コードで示したイベント ハンドラーがトリガーされます。

textBox1_TextChanged

textBox12 つのラベルのそれぞれの Text プロパティを使用して、TextChanged イベントが発生した時点の内容に基づいて、ラベルのテキストを設定できます。一般的な形式は

labelSome = "Some Text Here";

ただし、リストボックスに同じ方法で入力すると、動作が混乱することに注意してください。2001 と入力すると、TextChanged イベントが 4 回 (各 1 回ずつ) 発生し2 0 0 1ます。実際のテキストは、それぞれ 、220200です2001。各イベントのリスト ボックスの更新を開始すると、最初のイベントでは、映画を 2 年より前の映画と後の映画に分割する必要があります。

より良いユーザー インターフェイスは、リスト ボックスへの入力とラベルのテキストの更新の両方を行う [検索] ボタンを提供することです。

于 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

これを試して:

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

DanT へのコメントに基づいています。複合フォーマットで String.Format を使用してみることができます

リンクから:

複合フォーマット文字列とオブジェクト リストは、複合フォーマット機能をサポートするメソッドの引数として使用されます。複合フォーマット文字列は、1 つ以上のフォーマット項目と混合された固定テキストの 0 個以上のランで構成されます。固定テキストは選択した任意の文字列であり、各書式項目はリスト内のオブジェクトまたはボックス化された構造に対応しています。複合フォーマット機能は、各フォーマット項目がリスト内の対応するオブジェクトの文字列表現に置き換えられた新しい結果文字列を返します。

于 2012-07-14T03:27:49.560 に答える