C#如何获得panel中的控件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#如何获得panel中的控件相关的知识,希望对你有一定的参考价值。

哪位朋友知道怎么获得panel中的一个控件呀?我在panel上有个datagrid的控件,我想在panel获得这个控件

要了解他的父容器,或者了解他得某一个特性。

简单举例我在窗体中找一个Panel控件,我只知道他的背景颜色是Color.Red,现在要把他的颜色改成黑色,也不知道他到底放在几个panel里面,就要用到下面语句:

void ViewCtl(Control ctl)

    if(ctl is Panel)
    
        if(ctl.BackColor==Color.Red)
        
            ctl.BackColor=Color.Black;
        
    

void ViewForm(Control ctl)

    if(ctl.Controls.Count>0)//如果他里面有控件
    
        foreach(Control ctl in ctl.Controls)//遍历窗体所有控件
        
            ViewCtl(ctl); //进行操作
        
        ViewForm(ctl);  //循环事件
    
    else
    
        break; //当循环到实在没有控件可找的时候停止
    

如上,ViewForm就是在找到背景为红色的panel,把他染成黑色。

参考技术A for(int i=0;i<Panel1.Controls.Count;i++)

if(Panel1.Controls[i].GetType()==Typeof(datagrid))

datagrid dg=(datagrid)(Panel1.Controls[i]);
//dg就是panel中唯一的一个datagrid,很久没写代码了,不知道对不对
本回答被提问者和网友采纳
参考技术B Windows 窗体 Panel 控件用于为其他控件提供可识别的分组。通常,使用面板按功能细分窗体。例如,可能有一个订单窗体,它指定邮寄选项(如使用哪一类通营承运商)。将所有选项分组在一个面板中可向用户提供逻辑可视提示。在设计时所有控件都可以轻松移动 -- 当移动 Panel 控件时,它包含的所有控件也将移动。分组在一个面板中的控件可以通过面板的 Controls 属性进行访问。此属性返回一批 Control 实例,因此,通常需要将该方式检索得到的控件强制转换为它的特定类型。
若要显示滚动条,请将 AutoScroll 属性设置为 true。也可以通过设置 BackColor、BackgroundImage 和 BorderStyle 属性自定义面板的外观。有关 BackColor 和 BackgroundImage 属性的更多信息,请参见“如何设置 Windows 窗体面板的背景”。BorderStyle 属性确定面板轮廓为无可视边框 (None)、简单线条 (FixedSingle) 还是阴影线条 (Fixed3D)。
参考技术C 代码如下:
private void button2_Click(object sender, EventArgs e)

MessageBox.Show(panel1.Controls.Count+"");
参考技术D panel.Controls

在C#中使用Panel控件实现在一个窗体中嵌套另一个窗体

在C#中使用Panel控件实现在一个窗体中嵌套另一个窗体
ShowAllPage sAllPage = new ShowAllPage();
          //  sAllPage.FormBorderStyle = FormBorderStyle.None;
           // sAllPage.Dock = DockStyle.Fill;
            sAllPage.TopLevel = false;
            this.MainPanel.Controls.Clear();
            this.MainPanel.Controls.Add(sAllPage);
            sAllPage.Show();

MainPanel为主窗体中的Panel控件,ShowAllPage为要在主窗体中显示中Panel中的窗体.

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------------

FormBorderStyle 属性设置新窗体的边框样式
Dock属性获取或设置哪个边框停靠到父框体并确定如何随父框体一起调整大小
这两项属性可不加

 

但是用一个最简单的方法来说,就是使用MDI
首先,父窗口要设置IsMdiContainer属性为True。实现MDI结构的父子窗口套用
然后在窗口跳转处改为如下代码:
例:一般跳转:Form1 f=new Form();
                                 F.Show();
改为:
Form1 c = new Form1();
            c.MdiParent = this;
            c.Show();
不过这样有时会遇到一个问题,就是子窗体在跳出的时候会以父窗体的0,0坐标为准,所以在父窗体中如果有菜单栏的话,子窗体会被遮盖上,那么我们就在子窗体的Form_Load()中加上一句话来设置它与窗体上边缘的距离
this.Top = 100;
这样就完成了一个窗体在另一个窗体中的嵌套

以上是关于C#如何获得panel中的控件的主要内容,如果未能解决你的问题,请参考以下文章

c#中关于splitContainer控件的用法:如何做到不清除控件就能在panel2中打开一个窗体呢?

C#把winform中的Panel控件部分全屏

求教 C#窗体中动态添加了Panel,再如何动态的在Panel中添加文本框控件呢?

如何改变C#的Panel控件的边框颜色

winform 如何将panel中的某一个控件置于最上层?

如何获取 WinForm 上所有控件的列表,即使是 SplitContainers 或 Panels 中的控件