C# TabControl控件中TabPage选项卡切换时的触发事件问题
作者:程序猿_liter 发布时间:2022-10-30 08:11:13
TabControl控件中TabPage选项卡切换时的触发事件
选项卡切换触发的是TabControl控件的SelectedIndexChanged事件。
当TabControl控件的任何一个TabPage被点击或选择,即发生SelectedIndexChanged事件事件。
代码如下:
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
if (tabControl1.SelectedIndex == 0)//也可以判断tabControl1.SelectedTab.Text的值
{
//执行相应的操作
tabPageSubject.Parent = tabControlExtract;//显示
}
else if (tabControl1.SelectedIndex == 1)
{
//执行相应的操作
tabPageSubject.Parent = null; //隐藏选项卡tabPageSubject
}
}
C#选项卡TabControl控件隐藏执行选项卡的方式
如下图窗体:
如果我们想要隐藏tabPage1的话,我们该怎么做。
首先,tabControl控件由若干个tabPage成员组成。而这些tabPage成员的属性中并没有visable属性来控制它是否隐藏,那么怎么来实现隐藏呢?
首先,打开From的代码生成器:
翻到最下面我们可以看到如下几行代码。
这说明了tabPage实际上是个类。那么我们便可以正对具体的tabPage1/tabPage2/tabPage3进行操作。选项卡隐藏一般不会再tabControl上。
查看TabPage类的定义如下:
从上面的定义我们看了,有一个Visible的属性。也许和选项卡的隐藏有关。虽然Visible官方说明此成员对控件无意义。
但是经过探索,发现他还是可以用的如下:
我们在tabPage1放一个Button控件便于观察。
将隐藏和显示两个按钮编写Click时间如下:
经过试验可知,Visble属性还是有效果的,只不过效果与我们想要的不太一样。
当点击隐藏按钮时如下:Button依靠的容器消失了。但是tabPage选项卡还在!!!
当我们点击显示按钮时如下:Button与其依符的容器又显示出来了!!!
那么有没有其他办法呢?
综合网上诸多的办法,有一种比较方便就是利用TabPage类中的Parent属性设置TabPage成员依靠的父类容器即可。
具体实现如下:
利用Parent属性能够实现选项卡隐藏与显示。
状态如下:
那么为什么设置Parent属性就能够实现隐藏呢?
经过追踪发现TabPage的Parent属性实际在继承链中的Control类中。
换言之Parent是Control类的属性。TabPage类是继承Control类的。而Parent属性的解释如下:
Parent属性是控件的父容器。基本上每个控件都有个父容器。这是他们的依附的区域。如果父容器为空的话,控件必然无法依附,自然也就不能显示出来了。
窗体From是没有Parent父容器属性的,因为它是最底层的容器!!!
由于每个控件都有Parent,同理我们可以通过Parent属性来控制任意控件的显示与否。
如下,我们可以通过设置“显示”按钮的Parent属性来设置隐藏。
如下:
当隐藏按钮按下的时候就设置显示按钮的父容器为空。
下面试验一下:
如下,设置成功!!
来源:https://blog.csdn.net/liao513146936/article/details/123841330


猜你喜欢
- spring boot实现自动输出word文档功能本文用到Apache POI组件组件依赖在pom.xml文件中添加<dependen
- 员工管理系统要求如下:通过面向对象的编程思想,实现员工信息的增删改查,存储结构为数组。限定数组长度为100。实现页面:添加员工查找员工修改员
- 本文实例讲述了在类库或winform项目中打开另一个winform项目窗体的方法。分享给大家供大家参考。具体如下:一、问题:假设类库或win
- 工程搭建1.File->new->project;2.选择“Spring Initializr”,点击next;(jdk1.8默
- 1. 测试用例我们以sentinel-demo中的sentinel-annotation-spring-aop为例,分析sentinel的源
- 一、概述VideoView类将视频的显示和控制集于一身,我们可以借助它完成一个简易的视频播放器。VideoView和MediaPlayer也
- using System;using System.Collections.Generic;using System.Text;using
- " 梧桐更兼细雨,到黄昏、点点滴滴。"C语言朱武大战数据结构专栏C语言植物大战数据结构快速排序图文示例C语言植物大战数据
- 1. for循环示例#include <stdio.h>int main(){int i,j;int len=4;for(i=l
- 开发android的时候,尽管手机已经root但是DDMS中还是没有data/data路径怎么办?可以用cmd命令提示符为逐个文件夹设置权限
- 1 前言单例模式是我们经常使用的一种模式,一般来说很多资料都建议我们写成如下的模式:/** * Created by qiyei2015 o
- 一:自定义异常类:package 自定义异常; //或者继承RuntimeException(运行时异常) public class MyE
- LockSupport 简介LockSupport 是 Java 并发编程中一个非常重要的组件,我们熟知的并发组件 Lock、线程池、Cou
- 将某个项目从Spring Boot1升级Spring Boot2之后出现如下报错,查了很多不同的解决方法都没有解决:Spring boot2
- 前言上一篇讲了普通轮询、加权轮询的两种实现方式,重点讲了平滑加权轮询算法,并在文末留下了悬念:节点出现分配失败时降低有效权重值;成功时提高有
- 如下所示:import org.apache.commons.lang.StringUtils; public class Test {
- 假定存在这样一种情况多个用户对数据库进行写,我们的业务逻辑规定,每个用户只能写一次,大部分用户也只发一次请求。public void wri
- 前言Quarkus和RESTEasy团队非常高兴地宣布了Quarkus中的RESTEasy Reactive集成已进入master分支,并将
- 1、静态代码块①、格式在java类中(方法中不能存在静态代码块)使用static关键字和{}声明的代码块:public class Code
- 本文研究的主要是Java面试题中的一个比较常见的题目,判断及防止SQL注入的问题,具体介绍如下。SQL注入是目前黑客最常用的攻击手段,它的原