从checkedListBox添加动态标签和文本框

时间:2012-12-13 19:42:14

标签: c# winforms visual-studio checkedlistbox

我有一个checkedListBox,它包含我在SQL数据库中的一些充电站的名称。我已经使用工作站名称填充了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);
        }

只有它实际上不会创建标签。

2 个答案:

答案 0 :(得分:0)

我认为您需要在设计器中创建标签并将其设为Visible =“False”。然后在您的代码中,根据需要将其设为Visible =“True”。与文本框相同。

答案 1 :(得分: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);
            }
        }
    }

要检查/尝试的一些事情:

  • 确保标签的位置不在其他控件之后!!
  • 使用var / object代替“BetterServiceReference.Station”
  • tabPage7是您表单的名称吗?尝试使用this.Controls.Add(lbl);

我还会警告您,一旦取消选中项目,您的功能将删除标签。此外,对于任何选中的复选框,它只会在一个点中创建一个标签。实施你想要做的事情需要花费一些工作;正如另一个答案建议的那样,你可能最好在可见/不可见之间切换控件。

但是,希望我的回答可以帮助您动态创建标签,并且创建文本框将非常相似。