none
关于删除picturebox上添加的指定控件的问题 RRS feed

  • 问题

  • 自己写了两个继承自panel的控件,p1,p2;各添加多个到picturebox上
    1、请问怎样删除p2类型的控件
    2、添加p1时生成一个与之关联的p2,请问怎么关联,在删除p1的时候同时删除与之关联的p2

    2009年10月27日 7:08

答案

  • 1,foreach(Control c in  picturebox.Controls)
    {
    if(c is p2)
    {
    picturebox.Controls.Remove(c);
    }
    }

    2,p1新增个属性p2 用来存储与之关联的p2的地址

    在PictureBox中删除p1的时候同时检查是否p1的p2属性为空,不为空 将其从子控件中删除
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://blog.tanging.net
    • 已标记为答案 ahking 2009年10月28日 2:18
    2009年10月27日 7:32
    版主
  • p2是引用类型的 所以将p2传给p1不会导致新的对象产生,只是一个地址指向p2,所以作为参数是没多大关系的

    删除的时候直接Controls.Remove(Control)不用你自己去遍历的
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://blog.tanging.net
    • 已标记为答案 ahking 2009年10月28日 2:18
    2009年10月28日 1:38
    版主

全部回复

  • 1,foreach(Control c in  picturebox.Controls)
    {
    if(c is p2)
    {
    picturebox.Controls.Remove(c);
    }
    }

    2,p1新增个属性p2 用来存储与之关联的p2的地址

    在PictureBox中删除p1的时候同时检查是否p1的p2属性为空,不为空 将其从子控件中删除
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://blog.tanging.net
    • 已标记为答案 ahking 2009年10月28日 2:18
    2009年10月27日 7:32
    版主
  • 1,foreach(Control c in  picturebox.Controls)
    {
    if(c is p2)
    {
    picturebox.Controls.Remove(c);
    }
    }

    2,p1新增个属性p2 用来存储与之关联的p2的地址

    在PictureBox中删除p1的时候同时检查是否p1的p2属性为空,不为空 将其从子控件中删除
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://blog.tanging.net

    p1删除操作是在p1类内部实现的,添加了一个ContextMenuStrip。这样要删除p2是否还有把picturebox传进去啊。为了查找p2,是否还是要遍历一遍啊
    2009年10月28日 0:23
  • 是直接把picturbox设为public 好,还是作为参数传进去好呢?
    2009年10月28日 1:28
  • p2是引用类型的 所以将p2传给p1不会导致新的对象产生,只是一个地址指向p2,所以作为参数是没多大关系的

    删除的时候直接Controls.Remove(Control)不用你自己去遍历的
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://blog.tanging.net
    • 已标记为答案 ahking 2009年10月28日 2:18
    2009年10月28日 1:38
    版主