-1

SQLデータベースにあるいくつかの充電ステーションの名前を含むcheckedListBoxがあります。私はcheckedListBoxに駅名を入力しました。ボックス内のアイテムをチェックすると、「Km to "+itemsChecked.StationNameというテキストのラベルがcheckedListboxとtextBoxのすぐ下に表示されることを望みます。駅までのキロメートルを入力する場所。新しい充電ステーションを作成するために使用されており、キロメートルは次のステーションまでのエッジのコストです。私はこのようなことを試しました:

private void stationCheckedListBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        foreach (BetterServiceReference.Station itemsChecked in stationCheckedListBox.CheckedItems)
        {
            var lbl = new Label();
            lbl.Name = "lblAuto" + itemsChecked.StationId;
            lbl.Text = "Km to " + itemsChecked.StationName;
            lbl.AutoSize = true;
            lbl.Location = new Point(33, 462);
            lbl.Name = "label1";
            lbl.Size = new Size(35, 13);
            tabPage7.Controls.Add(lbl);
        }

ただ実際にラベルを作成するわけではありません。

4

2 に答える 2

0

サンプルプログラムを作成しましたが、うまく機能しているようです。

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

        private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            foreach (var item in checkedListBox1.CheckedItems)
            {
                Label lbl = new Label();
                lbl.Text = "Testing";
                lbl.Location = new Point(125, 125);
                this.Controls.Add(lbl);
            }
        }
    }

チェック/試してみるいくつかのこと:

  • ラベルの場所が他のコントロールの背後にないことを確認してください!!
  • 「BetterServiceReference.Station」の代わりにvar/を使用しますobject
  • あなたtabPage7のフォームの名前は?使ってみてくださいthis.Controls.Add(lbl);

また、アイテムのチェックを外すと、関数がラベルを削除しないことも警告します。また、現状では、チェックボックスがオンになっている場合、1つの場所に1つのラベルのみが作成されます。やろうとしていることを実装するには、少し手間がかかります。他の回答が示唆しているように、表示と非表示の間でコントロールを切り替える方がよい場合があります。

しかし、うまくいけば、私の答えが動的にラベルを作成するのに役立ち、テキストボックスの作成は非常に似ています。

于 2012-12-13T20:22:25.470 に答える
0

デザイナーでラベルを作成し、Visible="False" にする必要があると思います。次に、コードで、必要に応じて Visible="True" にします。テキストボックスも同様。

于 2012-12-13T19:47:00.107 に答える