国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

使用C#語言實現(xiàn)的查詢條件界面展開和收起功能

2019-10-29 21:19:01
字體:
供稿:網(wǎng)友

先簡單說一下應用場景,現(xiàn)有一個C#客戶端的查詢界面,上方放置查詢條件,下方放置查詢結(jié)果。因為實際情況中查詢條件可能占了好幾行的位置,所以希望在界面上默認只保留一行最主要的查詢條件,并在右側(cè)有一個“展開/收起”功能。

收起時界面:

c#實現(xiàn)展開收起

展開時界面:

c#實現(xiàn)展開收起

最開始我的實現(xiàn)方式是這樣的,在界面上放置一個LinkLabel,設(shè)置此LinkLabel的鼠標單擊事件,調(diào)整查詢條件所在Panel的Height屬性。

c#實現(xiàn)展開收起

C#代碼如下:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace SatyrAndNymph{public partial class FormMethod1 : Form{//收起狀態(tài)時Panel高度private const int HeightWhenFold = 50;//收起狀態(tài)時LinkLabel顯示文字private const string DescriptionWhenFold = "展開";//展開狀態(tài)時Panel高度private const int HeightWhenExpand = 85;//展開狀態(tài)時LinkLabel顯示文字private const string DescriptionWhenExpand = "收起";/// <summary>/// 窗體構(gòu)造函數(shù)/// </summary>public FormMethod1(){InitializeComponent();//構(gòu)造函數(shù)后將Panel調(diào)整為收起狀態(tài)lnkControlHeight.Text = DescriptionWhenFold;pnlQueryConds.Height = HeightWhenFold;}/// <summary>/// LinkLabel單擊事件/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void lnkControlHeight_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e){//根據(jù)顯示文字為展開/收起,調(diào)整Panel的高度及LinkLabel展示文字if (lnkControlHeight.Text == DescriptionWhenFold){lnkControlHeight.Text = DescriptionWhenExpand;pnlQueryConds.Height = HeightWhenExpand;}else if (lnkControlHeight.Text == DescriptionWhenExpand){lnkControlHeight.Text = DescriptionWhenFold;pnlQueryConds.Height = HeightWhenFold;}}}}

不過我認為這樣處理還是不夠完美:每次使用都需要專門創(chuàng)建一個LinkLabel,并且每個頁面的代碼都不一樣,因為父容器的標識符是不一樣的。

為了解決這兩個問題,我設(shè)計了一個自定義控件以方便后續(xù)的開發(fā)工作。

控件名為HeightController,界面如下:

c#實現(xiàn)展開收起

自定義控件中只包含一個LinkLabel,AutoSize屬性被設(shè)置為False,Dock屬性被設(shè)置為Full,TextAlign屬性被設(shè)置為MiddleLeft。

C#代碼如下:

using System;using System.Collections.Generic;using System.ComponentModel;using System.Drawing;using System.Data;using System.Linq;using System.Text;using System.Windows.Forms;namespace SatyrAndNymph{/// <summary>/// 展開/收起控制器/// </summary>public partial class HeightController : UserControl{/// <summary>/// 展開/收起控制器/// </summary>public HeightController(){InitializeComponent();}private void HeightController_Load(object sender, EventArgs e){//設(shè)計器模式時,不觸發(fā)展開/收起,否則會對設(shè)計工作造成干擾if (!this.DesignMode){//調(diào)整展開/收起情況if (ControllerStatus == ControllerStatusEnum.FOLD){Fold();}else if (ControllerStatus == ControllerStatusEnum.EXPAND){Expand();}}}/// <summary>/// 控制器狀態(tài)/// </summary>private ControllerStatusEnum _controllerStatus = ControllerStatusEnum.FOLD;///<summary>/// 控制器狀態(tài)///</summary>[System.ComponentModel.Description("控制器狀態(tài)")]public ControllerStatusEnum ControllerStatus{get{return _controllerStatus;}set{_controllerStatus = value;}}/// <summary>/// 父容器展開/// </summary>public void Expand(){ControllerStatus = ControllerStatusEnum.EXPAND;if (this.Parent != null){this.Parent.Height = HeightWhenExpand;}this.lnkHeightController.Text = DescriptionWhenExpand;}/// <summary>/// 父容器收起/// </summary>public void Fold(){ControllerStatus = ControllerStatusEnum.FOLD;if (this.Parent != null){this.Parent.Height = HeightWhenFold;}this.lnkHeightController.Text = DescriptionWhenFold;}/// <summary>/// 收起時高度/// </summary>private int _heightWhenFold = 50;///<summary>/// 收起時高度///</summary>[DefaultValue(50)][System.ComponentModel.Description("收起時高度")]public int HeightWhenFold{get{return _heightWhenFold;}set{_heightWhenFold = value;}}/// <summary>/// 收起時顯示文字/// </summary>private string _descriptionWhenFold = "展開";///<summary>/// 收起時顯示文字///</summary>[System.ComponentModel.Description("收起時顯示文字")]public string DescriptionWhenFold{get{return _descriptionWhenFold;}set{_descriptionWhenFold = value;}}/// <summary>/// 展開時高度/// </summary>private int _heightWhenExpand = 85;///<summary>/// 展開時高度///</summary>[DefaultValue(85)][System.ComponentModel.Description("展開時高度")]public int HeightWhenExpand{get{return _heightWhenExpand;}set{_heightWhenExpand = value;}}/// <summary>/// 展開時顯示文字/// </summary>private string _descriptionWhenExpand = "收起";///<summary>/// 展開時顯示文字///</summary>[System.ComponentModel.Description("展開時顯示文字")]public string DescriptionWhenExpand{get{return _descriptionWhenExpand;}set{_descriptionWhenExpand = value;}}/// <summary>/// 點擊LinkLabel文字/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void lnkHeightController_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e){if (this.Parent != null){int height = this.Parent.Height;//根據(jù)父容器高度判斷父容器應是收起還是展開if (ControllerStatus == ControllerStatusEnum.FOLD){Expand();}else{Fold();}}}}}

使用此控件時,直接將此控件拖入要改變高度的Panel或其他容器即可。

c#實現(xiàn)展開收起

使用前需要先在控件屬性中設(shè)置好如下5項內(nèi)容:

c#實現(xiàn)展開收起

各屬性說明如下:

1、ControllerStatus,是一個枚舉,包含EXPAND和FOLD兩種選擇,決定窗體打開時查詢條件是展開或是收起的。

2、DescriptionWhenExpand,當查詢條件區(qū)域處于展開狀態(tài)時,控制器展示的文字

3、DescriptionWhenFold,當查詢條件區(qū)域處于收起狀態(tài)時,控制器展示的文字

4、HeightWhenExpand,查詢條件區(qū)域處于展開狀態(tài)時高度

5、HeightWhenFold,查詢條件區(qū)域處于收起狀態(tài)時高度

HeightController控件使用效果如下:

收起時界面:

c#實現(xiàn)展開收起

展開時界面:

c#實現(xiàn)展開收起

DEMO程序下載地址:

鏈接: http://pan.baidu.com/s/1jHSvVee  密碼: qfp7

以上所述是小編給大家介紹的使用C#語言實現(xiàn)的查詢條件界面展開和收起功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識閱讀請移步到c#教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 湖北省| 彰武县| 大连市| 桂平市| 浦县| 清流县| 峨山| 广饶县| 敦化市| 中超| 罗山县| 临泽县| 留坝县| 日喀则市| 尉犁县| 梅州市| 石狮市| 新邵县| 大田县| 邛崃市| 金山区| 唐海县| 柳河县| 葵青区| 桂阳县| 遂川县| 布拖县| 中西区| 南岸区| 绥中县| 肃南| 吉隆县| 绵竹市| 宁安市| 武乡县| 会泽县| 萝北县| 张家口市| 阿城市| 景东| 鄯善县|