c#中windows应用程序如何跳转窗体(如何隐藏部分控件)

时间:2022-08-31 07:40:21
如题所示,我现在的应用程序有2个form
form1和form2,数据库里面有一个power(权限)的字段,我从form1里面判断power=1的时候为最高权限,可以让form2的全部控件都可以实现
如果power为0的时候,跳转到form2的时候,部分控件为visible
就是这个让部分控件为visible该怎么写
if (dr.Read() == true)
                {
                    f1 f = new f1();
                    f.Show();
                    this.Hide();
                    if (dr["Power"].ToString() == "1")
                     {}//这里需要怎样写才可以实现,希望各位解答一下!!!
                }

20 个解决方案

#1


自己顶上先!!!希望有高手解答下!!!

#2


还是没有人回答,我再顶一下!!!

#3


 怎么没人回答呢??
希望有人解答!!

#4


你把FORM2里面相应的控件放在PANEL或GROUPBOX里面,这样判断的时候就可以,PANEL.VISIBLE=FALSE

#5


在form2窗体的初始化事件里面做判断 如果权限不够的话就把相应的enable 设为false 或者设visible也可以

#6


在form2.Designer.cs中把form2中的控件如button1设为public,visible:false。
if (dr.Read() == true) 
                { 
                    f1 f = new f1(); 
                    f.Show(); 
                    this.Hide(); 
                    if (dr["Power"].ToString() == "1") 
                    {
f.button1.Visible = true;

}//这里需要怎样写才可以实现,希望各位解答一下!!! 
                }

#7


不想让其显示的话,就设置Visible属性为false
bool Affir=false;
if (dr.Read() == true) 
                { 
                    f1 f = new f1(); 
                    f.Show(); 
                    this.Hide(); 
                    if (dr["Power"].ToString() == "1") 
                    {  
                     f2 ff=new f2();
                     ff.Affir=true;
                     ff.Show(); //然后在f2窗体中把那些控件的 Visible属性设置为 Affir           
                           }  
}

#8


在控件窗口察看属性,每一个属性都可以通过代码来修改的

#9


最简单的就是写动态添加按钮啦   

#10


在form2的构造函数里加参数,在new form2时将f1的值传人,然后在form2中做判断!

#11


引用 10 楼 smallxu 的回复:
在form2的构造函数里加参数,在new form2时将f1的值传人,然后在form2中做判断! 

我就常常这么干

#12


现有代码如下:
form1中
SqlDataReader dr = cmd.ExecuteReader();
                    if (dr.Read () )
                    {

                        mainform main = new mainform();
                        main.Show();
                        this.Hide();
                        power = dr[3].ToString().Trim ();
                        mainform.userpower = power;
                        mainform.A.power = power;
                        MessageBox.Show("登录成功!您的身份是" + power , "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    }
form2中
public static string userpower=null;
private void mainform_Load(object sender, EventArgs e)
        {
            系统控制ToolStripMenuItem.Enabled = false;
            员工信息维护ToolStripMenuItem.Enabled = false;
            培训计划制定ToolStripMenuItem.Enabled = false;
            培训评价ToolStripMenuItem.Enabled = false;
            员工信息查询ToolStripMenuItem.Enabled = false;
            使用帮助ToolStripMenuItem.Enabled = false;
            this.toolBar1.Enabled = false;
            
            
            Check();
        }
switch (mainform .userpower )
            {
                case "系统管理员":
                    {
                        this.系统控制ToolStripMenuItem.Enabled = true;
                        this.员工信息维护ToolStripMenuItem.Enabled = true;
                        this.培训计划制定ToolStripMenuItem.Enabled = true;
                        this.培训评价ToolStripMenuItem.Enabled = true;
                        this.员工信息查询ToolStripMenuItem.Enabled = true;
                        this.使用帮助ToolStripMenuItem.Enabled = true;
                        this.toolBar1.Enabled = true;
                        break;
                    }
                case "普通管理员":
                    {
                        this.系统控制ToolStripMenuItem.Enabled = true;
                        this.员工信息维护ToolStripMenuItem.Enabled = true;
                        this.培训计划制定ToolStripMenuItem.Enabled = true;
                        this.培训评价ToolStripMenuItem.Enabled = true;
                        this.员工信息查询ToolStripMenuItem.Enabled = true;
                        this.使用帮助ToolStripMenuItem.Enabled = true;
                        this.用户管理ToolStripMenuItem.Enabled = false;
                        this.toolBar1.Enabled = true;
                        this.用户管理 .Enabled = false;

                        break;
                    }
                case "普通用户":
                    {

                        this.员工信息查询ToolStripMenuItem.Enabled = true;
                        this.使用帮助ToolStripMenuItem.Enabled = false;
                        this.员工录入.Enabled = false;
                        this.用户管理.Enabled = false;
                        this.员工录入.Enabled = false;
                        this.数据分析.Enabled = false;
                        this.计划制定.Enabled = false;

                        break;
                    }
             在程序运行的时候,case没有反映,就是出现的情况没有case里面的任何一种,就好像userpower里面没有值一样!!

#13


这个问题该如何解决!!!

#14


引用 4 楼 haifeng39 的回复:
你把FORM2里面相应的控件放在PANEL或GROUPBOX里面,这样判断的时候就可以,PANEL.VISIBLE=FALSE

我也是这样想的,顶了~~~~

#15


通过控件的Name属性找到控件,然后再根据Name对应的控件的 Visible属性控制该控件是否可见:例如
btn1.Visible=false;
text1.Visible=false;
panl.visible.false;
注意上边有人把控件的 Visible属性和Enabled 属性搞混了!Visible属性是控制控件是否可见,而Enabled 属性是控制该控件是否可用!这是两个完全不相同的概念,方法还可以,不过建议你使用Group或着panl容器,这样的话方便的很!

#16


其实可以定义一个全局变量在 Form1 的事件中保存 dr["Power"].ToString()的值,然后在Form2的Load事件中判断
dr["Power"].ToString()的值是否为“1”即可

#17


可以在form2里定义一个public变量,然后在new form2时,直接赋值就行

#18


原因已经找到了,我知道是什么原因了

#19


其实原因很简单,是因为位置调换了
在show之后才赋值,所以就show的时候没有赋值到,所以在form2就没有了!!

#20


总结一下,这个问题就可以在form2定义个全局static字段,然后在form1里面需要传给form2的值传给给form2.字段名,就可以传给form2了,其次还有顺序的问题,就是要先传值,再显示,否则,显示不了。

#1


自己顶上先!!!希望有高手解答下!!!

#2


还是没有人回答,我再顶一下!!!

#3


 怎么没人回答呢??
希望有人解答!!

#4


你把FORM2里面相应的控件放在PANEL或GROUPBOX里面,这样判断的时候就可以,PANEL.VISIBLE=FALSE

#5


在form2窗体的初始化事件里面做判断 如果权限不够的话就把相应的enable 设为false 或者设visible也可以

#6


在form2.Designer.cs中把form2中的控件如button1设为public,visible:false。
if (dr.Read() == true) 
                { 
                    f1 f = new f1(); 
                    f.Show(); 
                    this.Hide(); 
                    if (dr["Power"].ToString() == "1") 
                    {
f.button1.Visible = true;

}//这里需要怎样写才可以实现,希望各位解答一下!!! 
                }

#7


不想让其显示的话,就设置Visible属性为false
bool Affir=false;
if (dr.Read() == true) 
                { 
                    f1 f = new f1(); 
                    f.Show(); 
                    this.Hide(); 
                    if (dr["Power"].ToString() == "1") 
                    {  
                     f2 ff=new f2();
                     ff.Affir=true;
                     ff.Show(); //然后在f2窗体中把那些控件的 Visible属性设置为 Affir           
                           }  
}

#8


在控件窗口察看属性,每一个属性都可以通过代码来修改的

#9


最简单的就是写动态添加按钮啦   

#10


在form2的构造函数里加参数,在new form2时将f1的值传人,然后在form2中做判断!

#11


引用 10 楼 smallxu 的回复:
在form2的构造函数里加参数,在new form2时将f1的值传人,然后在form2中做判断! 

我就常常这么干

#12


现有代码如下:
form1中
SqlDataReader dr = cmd.ExecuteReader();
                    if (dr.Read () )
                    {

                        mainform main = new mainform();
                        main.Show();
                        this.Hide();
                        power = dr[3].ToString().Trim ();
                        mainform.userpower = power;
                        mainform.A.power = power;
                        MessageBox.Show("登录成功!您的身份是" + power , "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    }
form2中
public static string userpower=null;
private void mainform_Load(object sender, EventArgs e)
        {
            系统控制ToolStripMenuItem.Enabled = false;
            员工信息维护ToolStripMenuItem.Enabled = false;
            培训计划制定ToolStripMenuItem.Enabled = false;
            培训评价ToolStripMenuItem.Enabled = false;
            员工信息查询ToolStripMenuItem.Enabled = false;
            使用帮助ToolStripMenuItem.Enabled = false;
            this.toolBar1.Enabled = false;
            
            
            Check();
        }
switch (mainform .userpower )
            {
                case "系统管理员":
                    {
                        this.系统控制ToolStripMenuItem.Enabled = true;
                        this.员工信息维护ToolStripMenuItem.Enabled = true;
                        this.培训计划制定ToolStripMenuItem.Enabled = true;
                        this.培训评价ToolStripMenuItem.Enabled = true;
                        this.员工信息查询ToolStripMenuItem.Enabled = true;
                        this.使用帮助ToolStripMenuItem.Enabled = true;
                        this.toolBar1.Enabled = true;
                        break;
                    }
                case "普通管理员":
                    {
                        this.系统控制ToolStripMenuItem.Enabled = true;
                        this.员工信息维护ToolStripMenuItem.Enabled = true;
                        this.培训计划制定ToolStripMenuItem.Enabled = true;
                        this.培训评价ToolStripMenuItem.Enabled = true;
                        this.员工信息查询ToolStripMenuItem.Enabled = true;
                        this.使用帮助ToolStripMenuItem.Enabled = true;
                        this.用户管理ToolStripMenuItem.Enabled = false;
                        this.toolBar1.Enabled = true;
                        this.用户管理 .Enabled = false;

                        break;
                    }
                case "普通用户":
                    {

                        this.员工信息查询ToolStripMenuItem.Enabled = true;
                        this.使用帮助ToolStripMenuItem.Enabled = false;
                        this.员工录入.Enabled = false;
                        this.用户管理.Enabled = false;
                        this.员工录入.Enabled = false;
                        this.数据分析.Enabled = false;
                        this.计划制定.Enabled = false;

                        break;
                    }
             在程序运行的时候,case没有反映,就是出现的情况没有case里面的任何一种,就好像userpower里面没有值一样!!

#13


这个问题该如何解决!!!

#14


引用 4 楼 haifeng39 的回复:
你把FORM2里面相应的控件放在PANEL或GROUPBOX里面,这样判断的时候就可以,PANEL.VISIBLE=FALSE

我也是这样想的,顶了~~~~

#15


通过控件的Name属性找到控件,然后再根据Name对应的控件的 Visible属性控制该控件是否可见:例如
btn1.Visible=false;
text1.Visible=false;
panl.visible.false;
注意上边有人把控件的 Visible属性和Enabled 属性搞混了!Visible属性是控制控件是否可见,而Enabled 属性是控制该控件是否可用!这是两个完全不相同的概念,方法还可以,不过建议你使用Group或着panl容器,这样的话方便的很!

#16


其实可以定义一个全局变量在 Form1 的事件中保存 dr["Power"].ToString()的值,然后在Form2的Load事件中判断
dr["Power"].ToString()的值是否为“1”即可

#17


可以在form2里定义一个public变量,然后在new form2时,直接赋值就行

#18


原因已经找到了,我知道是什么原因了

#19


其实原因很简单,是因为位置调换了
在show之后才赋值,所以就show的时候没有赋值到,所以在form2就没有了!!

#20


总结一下,这个问题就可以在form2定义个全局static字段,然后在form1里面需要传给form2的值传给给form2.字段名,就可以传给form2了,其次还有顺序的问题,就是要先传值,再显示,否则,显示不了。

#21