-1

我有一个checkedListBox,其中包含我在SQL 数据库中拥有的一些充电站的名称。我已经用车站名称填充了checkedListBox,我希望如果你选中框中的一个项目,一个带有文本“Km to”+itemsChecked.StationName的标签会出现在checkedListbox的下方,以及一个文本框,一个人将进入到车站的公里处。它被用来创建一个新的充电站,公里数是到下一个充电站的边缘成本。我试过这样的事情:

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

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

于 2012-12-13T19:47:00.107 回答
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);

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

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

于 2012-12-13T20:22:25.470 回答