WINFORM用户控件与主窗体间操作问题请教。

csdnhbgjh 2015-08-26 05:05:41
有一个主窗体文件:Form1.cs
中有移除flowLayoutPanel1中控件方法:
public void RemoveControl(Control ctrl)
{
flowLayoutPanel1.Controls.Remove(ctrl);
flowLayoutPanel1.Refresh();
}
该主体窗体button1事件执行以上移除方法正常。

请教在
另一个用户控件文件:UserControl1.cs(该控件包含在Form1中)
有一个groupBox1(这里有其他内容)和button1,点击button1移除事件如下:
//移除
public void button1_Click(object sender, EventArgs e)
{
//执行移除主窗体Form1,RemoveControl,移除当前groupBox1
}
...全文
274 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdnhbgjh 2015-08-27
  • 打赏
  • 举报
回复
实现想要效果了,谢谢各位提供思路资源。 namespace Test { public partial class UCBase : UserControl { public UCBase() { InitializeComponent(); label1.Text = Guid.NewGuid().ToString(); } //声明事件委托 public delegate void OperatorEventHandler(object sender); //定义事件 public event OperatorEventHandler OnOperatorClick; public void PicBox_Click(object sender, EventArgs e) { OnOperatorClick(this); } } } namespace Test { public partial class Form9 : Form { public Form9() { InitializeComponent(); } private void btnAdd_Click(object sender, EventArgs e) { UCBase uc = new UCBase(); uc.OnOperatorClick += new UCBase.OperatorEventHandler(uc_OnOperatorClick); uc.Width = 480; //设置宽度 flowLayoutPanel1.Controls.Add(uc); } private void uc_OnOperatorClick(object sender) { UCBase uc = sender as UCBase; int oldIndex = flowLayoutPanel1.Controls.IndexOf(uc);//获取操作项的索引值 //移除操作项 flowLayoutPanel1.Controls.Remove(uc); } } }
csdnhbgjh 2015-08-26
  • 打赏
  • 举报
回复
用户控件文件class UserControl1 public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); Form1 f1 = new Form1(); button1.Click += new EventHandler(f1.button1_Click); } ///移除按钮事件 button1_Click public void button1_Click(object sender, EventArgs e) { } ..... } ==================================================== 主窗体文件 public partial class Form1 : Form { public Form1() { InitializeComponent(); } public void button1_Click(object sender, EventArgs e) { MessageBox.Show("事件");/// ///点击用户控件中 移除按钮事件执行 button1_Click 后 这项测试正常显示 foreach (Control ctl in this.flowLayoutPanel1.Controls) //问题是.flowLayoutPanel1.Controls.count为0了 { if (ctl.Name == "3") RemoveControl(ctl); } } ....... } 问题是:flowLayoutPanel1.Controls.count为0了 foreach (Control ctl in this.flowLayoutPanel1.Controls) 我在主窗体按钮点击移出事件 Controls.count有数值 主窗体事件如下: private void button2_Click(object sender, EventArgs e) { foreach (Control ctl in flowLayoutPanel1.Controls) { if (ctl.Name == "3") RemoveControl(ctl); } } 请教为什么?
Poopaye 2015-08-26
  • 打赏
  • 举报
回复
既然包含在Form1中就好办了 ((Form1)TopLevelControl).RemoveControl(groupBox1);

110,536

社区成员

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

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

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