C#怎么将隐藏的控件一次性全部隐藏和显示出来

我正在用C#弄一个界面,然后界面上有两个按钮a和b,还有A、B、C三个LinkLabel控件,我想当按下a的时候A、B、C隐藏,当按下b的时候A、B、C又显示出来,请问怎... 我正在用C#弄一个界面,然后界面上有两个按钮a和b,还有A、B、C三个LinkLabel控件,我想当按下a的时候A、B、C隐藏,当按下b的时候A、B、C又显示出来,请问怎么一次性把它们显示和隐藏?(除了用Hide和Show将它们一个个隐藏和显示外有没其它办法?感觉这样代码太多太累赘了) 展开
 我来答
xiangjuan314
2016-01-13 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2651万
展开全部

1、如果在web中

一、使用Panel作为容器

 panel1:

<span style="font-size:14px;"><asp:Panel ID="Panel1" runat="server" Font-Size="Medium">
     <span id="sayHello">您好,<span><%=Session["UserName"] %></span></span>
     <asp:HyperLink ID="hlPersonalSpace" runat="server" NavigateUrl="~/NeedHelpSpace.aspx" Target="_self">个人空间</asp:HyperLink>
     <asp:HyperLink ID="hlInfo" runat="server">消息</asp:HyperLink>
     <asp:LinkButton ID="hlQuit" runat="server" OnClick="hlQuit_Click" >退出</asp:LinkButton>
 </asp:Panel></span>

 panel2:

<span style="font-size:14px;"><asp:Panel ID="Panel2" runat="server" Font-Size="Medium">
            您好,游客
       <a href="#" onclick="$('#w').window('open')">登陆</a> 
       <asp:HyperLink ID="hlRegister" runat="server" NavigateUrl="~/Register.aspx" Target="_blank">注册</asp:HyperLink>  
       <asp:HyperLink ID="hlSearch" runat="server">帮助</asp:HyperLink>  
 </asp:Panel></span>

后台代码:

<span style="font-size:14px;">            if (Session["UserName"] == null)
            {
                Panel2.Visible = true;
                Panel1.Visible = false;
            }
            else
            {
                Panel1.Visible = true;
                Panel2.Visible = false;
            }</span>

 二、使用div作为容器

 div1:

<span style="font-size:14px;"><div id="loginBefore" runat ="server" style="font-size:medium">
            <span id="topUser" style="padding-right:25px;">你好游客 
                <a href="javascript:void(0)" onclick="$('#w').window('open')">登录</a>
                <a href="Register.aspx">注册</a>
                <a href="#">搜索</a>
            </span>
</div></span>

div2:

<span style="font-size:14px;"><div id="loginAfter" runat="server" style="font-size:medium" >
           <span id="topUser1" style="padding-right:25px;">您好,<span><%=Session["UserName"] %></span> | 
               <a href="UserLogList.aspx?id=<%=Session["UserID"] %>" >个人空间</a> | 
               <a href="UnreadEmail.aspx">消息</a> | 
               <a href="#" onclick="loginQuit()">退出</a>
           </span>
</div></span>

C#后台调用方法:

<span style="font-size:14px;">            if (Session["UserName"] == null)  
            {  
  
                loginBefore.Style["Display"] = "Block";  
                loginAfter.Style["Display"] = "None";  
            }  
            else  
            {  
                loginBefore.Style["Display"] = "None";  
                loginAfter.Style["Display"] = "Block";  
            }  
</span>

 如果使用Js直接调用的话,可以操控div显隐的方法如下:

<span style="font-size:14px;">         document.getElementById("loginAfter").style.display = "none";//隐藏
         document.getElementById("loginBefore").style.display = "block";//显示</span>


2、在winform中

只需将控件的属性visible改为false,即可实现隐藏

如:隐藏this.button1.visible = false;

要显示改成true

syht2000
高粉答主

推荐于2016-06-11 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部

private void showlink(Boolean flag)
{
    foreach (Control c in this.Controls)
        if (c is LinkLabel) c.Visible = flag;
}


点按钮a的时候就是showlink(false),点b就是showlink(true)

追问
改变它的Visble值吗?这样也是每个控件都需要一句代码改变值来隐藏和显示吧?我的意思是能不能一两句代码就实现,不用一个控件一句代码重复?
追答

你是不是没看明白,上面代码点a的时候,无论窗体上有多少个linklabel控件都会被一次隐藏

注:在高版本的.net中,上面的showlink中的代码也可以换成

 this.Controls.OfType<LinkLabel>().ToList().ForEach(c => c.Visible = flag);
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式