动态添加控件到form为什么不行?

atmo 2012-05-25 01:58:46
[code=C#]
Button b = new Button();
b.Text = "ddd";
this.Controls.Add(b);
[code]

创建一个button 添加到窗体上 应该如何写 ?

加上this.ResumeLayout(false); 也不行

上述代码在窗体的构造函数里
...全文
189 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
dreamrising 2012-05-25
  • 打赏
  • 举报
回复
把相对位置计算好,都重叠了
assky124 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

放到page_load里就可以了

但是我这段代码不行

C# code
DirectoryInfo picFolder = new DirectoryInfo("pic/");
FileInfo[] files = picFolder.GetFiles();
int j = 0;
for (int i =……
[/Quote]

你所有的控件都在同一个位置,当然显示不出了
放到FlowLayoutPanel中试试
phantomlc 2012-05-25
  • 打赏
  • 举报
回复
private void Form1_Load(object sender, EventArgs e)
{
Button b = new Button();
b.Text="OK";
this.Controls.Add(b);
}
楼主:为什么我这样创建完全没问题那,可以创建BUTTON!
梦世界 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
楼主的button是不是被遮住了?
[/Quote]

你加上断点试试,执行那些加控件的代码了没,如果执行了说明已添加上去,只不过是他们初始位置都相同,被遮住了而已,可以用随机数定义他们的随机位置,这样就显现出来了。
atmo 2012-05-25
  • 打赏
  • 举报
回复
确实 谢谢11F
mathieuxiao 2012-05-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
动态创建几个panel 然后往panel里加picbox 然后设置picbox的image

结果一个都不显示 想用panel的隐藏和显示做幻灯片效果
[/Quote]
你的pbox没有添加到p里面
p.Controls.Add(pbox);
atmo 2012-05-25
  • 打赏
  • 举报
回复
8F 的可以 感谢 不过新问题出来了 见7F
atmo 2012-05-25
  • 打赏
  • 举报
回复
动态创建几个panel 然后往panel里加picbox 然后设置picbox的image

结果一个都不显示 想用panel的隐藏和显示做幻灯片效果
mathieuxiao 2012-05-25
  • 打赏
  • 举报
回复

public Form1()
{
Button b = new Button();
b.Size = new System.Drawing.Size(198, 59);
b.Location = new System.Drawing.Point(1, 1);
b.Text = "ddd";
this.Controls.Add(b);

InitializeComponent();
}


你试试这个,我试过可以的
atmo 2012-05-25
  • 打赏
  • 举报
回复
放到page_load里就可以了

但是我这段代码不行

DirectoryInfo picFolder = new DirectoryInfo("pic/");
FileInfo[] files = picFolder.GetFiles();
int j = 0;
for (int i = 0; i < files.Length; i++)
{
if (files[i].Extension == ".jpg")
{
j++;
Panel p = new Panel();
p.Name = "p" + j;
p.Size = new System.Drawing.Size(198, 59);
p.Location = new System.Drawing.Point(1, 1);
PictureBox pbox = new PictureBox();
pbox.Size = new System.Drawing.Size(198, 59);
pbox.Location = new System.Drawing.Point(1, 1);
pbox.Image = Image.FromFile("pic/" + files[i].Name);
this.Controls.Add(p);
}
}
atmo 2012-05-25
  • 打赏
  • 举报
回复
 Button b = new Button();
b.Size = new System.Drawing.Size(198, 59);
b.Location = new System.Drawing.Point(1, 1);
b.Text = "ddd";
this.Controls.Add(b);


还是不行
熙风 2012-05-25
  • 打赏
  • 举报
回复
楼主的button是不是被遮住了?
dalmeeme 2012-05-25
  • 打赏
  • 举报
回复
上述代码在窗体的构造函数里

写到窗体的Form_Load事件里就行了。
mathieuxiao 2012-05-25
  • 打赏
  • 举报
回复
然后把所有和这个button的相关的代码加入到构造函数中
mathieuxiao 2012-05-25
  • 打赏
  • 举报
回复
怎么可能不行?你没有设置button的size和location,所以就会什么也看不到。
最简单的方式就是,你先拖拽一个button到窗体,然后把所有和这个button的按钮加入到构造函数中,就知道你应该写什么样的代码了
tujun 2012-05-25
  • 打赏
  • 举报
回复
Button b应定义在函数外面,你在函数内部new出来,函数结束的时候都dispose了.

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧