gpt4 book ai didi

c# - 如何向 Windows 窗体面板动态添加标签或其他元素?

转载 作者:可可西里 更新时间:2023-11-01 13:16:22 25 4
gpt4 key购买 nike

所以这可能是一个非常基本的问题,但我正在将 ListBox 项目拖放到一个面板上,该面板将根据值创建组件。

作为一个简单的例子,当 ListBox 中的项目被放到面板上时,我需要它能够在面板上创建一个新标签。

我有以下代码,但我不确定如何在面板被删除后将标签动态添加到面板。

这是我的示例代码...

namespace TestApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)
{
listBox1.Items.Add("First Name");
listBox1.Items.Add("Last Name");
listBox1.Items.Add("Phone");
}

private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
ListBox box = (ListBox)sender;
String selectedValue = box.Text;
DoDragDrop(selectedValue.ToString(), DragDropEffects.Copy);
}

private void panel1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.Text))
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}

private void panel1_DragDrop(object sender, DragEventArgs e)
{
Label newLabel = new Label();
newLabel.Name = "testLabel";
newLabel.Text = e.Data.GetData(DataFormats.Text).ToString();

//Do I need to call either of the following code to make it do this?
newLabel.Visible = true;
newLabel.Show();

panel1.Container.Add(newLabel);
}
}

最佳答案

    //Do I need to call either of the following code to make it do this?
newLabel.Visible = true;
newLabel.Show();

没有必要。


newLabel.AutoSize = true;

很可能需要给它一个尺寸。


    panel1.Container.Add(newLabel);

必须替换为

    newLabel.Parent = panel1;

但是,除非拖动不起作用,否则您的方法应该有效。


发现错误。它必须是 panel1.Controls.Add(newLabel);newLabel.Parent = panel1; 而不是 panel1.Container.Add(newLabel);Container 是另外一回事。

关于c# - 如何向 Windows 窗体面板动态添加标签或其他元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4716485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com