我有一个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);
}
只有它实际上不会创建标签。
答案 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);
我还会警告您,一旦取消选中项目,您的功能将不删除标签。此外,对于任何选中的复选框,它只会在一个点中创建一个标签。实施你想要做的事情需要花费一些工作;正如另一个答案建议的那样,你可能最好在可见/不可见之间切换控件。
但是,希望我的回答可以帮助您动态创建标签,并且创建文本框将非常相似。