C#winform中如何点击一个窗体的button,向另一个窗体动态添加picbox控件

有两个窗体一个主窗体main,另一个窗体adddesk,如何实现当点击adddesk一个btnadd时候,main窗体就会自动的添加一个button控件... 有两个窗体一个主窗体main,另一个窗体adddesk,如何实现当点击adddesk一个btnadd时候,main窗体就会自动的添加一个button控件 展开
 我来答
makosharp
推荐于2016-07-18 · TA获得超过676个赞
知道小有建树答主
回答量:188
采纳率:100%
帮助的人:265万
展开全部
不建议将main作为参数传入其他子窗体,使用Owner属性即可
这样写:

假设你在main窗体中这样打开adddesk窗体:
Adddesk adddesk=new Adddesk(); //创建新的Adddesk窗体
adddesk.Owner=this; //使adddesk的所有者窗体为main
adddesk.show(); //显示adddesk

在adddesk窗体中某按钮的click事件下写:
Owner.Controls.Add(你要添加的控件); //在main中添加控件
你可能也会需要点击后控制main中已有的控件?这样:(假设main窗体中已有name为"button1"的按钮)
Owner.Controls["button1"].Visible=true; //同理应用于其他控件和其属性
//及成员方法

此方式同样适用于多个子窗体控制主窗体
优游自如
2009-09-23 · TA获得超过1012个赞
知道小有建树答主
回答量:233
采纳率:0%
帮助的人:182万
展开全部
给你个思路,在主窗体Main中定义一个公有的方法,比如
public void AddButton()
{
Button btn = new Button();
btn.Text = "btn1";
this.Controls.Add(btn);
}

然后把自己作为参数传给窗体AddDesk,在AddDesk的构造函数里写:
public AddDesk(Main main)
{
this.main = main;
}
记住 这个this.main是你实现申请的一个Main类型的变量
private Main main;

这样,在主窗体弹出AddDesk窗体的语句就这么写:
AddDesk addDesk = new AddDesk(this); //把自己作为参数传给AddDesk窗体
addDesk.ShowDialog();

在AddDesk窗体里点击btnAdd按钮里写上:
private void btnAdd_Click(object sender,EventArgs e)
{
this.main.AddButton();
}

你要的效果就实现了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rover1367
2009-09-24 · TA获得超过253个赞
知道小有建树答主
回答量:251
采纳率:0%
帮助的人:157万
展开全部
我觉得你把主窗体静态吧。
打开主窗体时候判断下是否为null,null就new一下打开。不然直接打开。
这样程序任何地方都可以直接使用他
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fanshengrui
2009-09-23 · 超过30用户采纳过TA的回答
知道答主
回答量:148
采纳率:0%
帮助的人:92万
展开全部
主窗体main
public void AddButton()
{
Button btn = new Button();
btn.Text = "btn1";
this.Controls.Add(btn);
}
另一个窗体adddesk
main.AddButton;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友32ff50e
2009-09-23 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:167
采纳率:0%
帮助的人:0
展开全部
button btn=new button()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式