欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來(lái)到入門教程網(wǎng)!

C#教程

當(dāng)前位置:主頁(yè) > 軟件編程 > C#教程 >

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

來(lái)源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C#教程|點(diǎn)擊: 次

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

收起時(shí)界面:

展開時(shí)界面:

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

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)時(shí)Panel高度
private const int HeightWhenFold = 50;
//收起狀態(tài)時(shí)LinkLabel顯示文字
private const string DescriptionWhenFold = "展開";
//展開狀態(tài)時(shí)Panel高度
private const int HeightWhenExpand = 85;
//展開狀態(tài)時(shí)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;
}
}
}
}

不過(guò)我認(rèn)為這樣處理還是不夠完美:每次使用都需要專門創(chuàng)建一個(gè)LinkLabel,并且每個(gè)頁(yè)面的代碼都不一樣,因?yàn)楦溉萜鞯臉?biāo)識(shí)符是不一樣的。

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

控件名為HeightController,界面如下:

自定義控件中只包含一個(gè)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è)計(jì)器模式時(shí),不觸發(fā)展開/收起,否則會(huì)對(duì)設(shè)計(jì)工作造成干擾
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>
/// 收起時(shí)高度
/// </summary>
private int _heightWhenFold = 50;
///<summary>
/// 收起時(shí)高度
///</summary>
[DefaultValue(50)]
[System.ComponentModel.Description("收起時(shí)高度")]
public int HeightWhenFold
{
get
{
return _heightWhenFold;
}
set
{
_heightWhenFold = value;
}
}
/// <summary>
/// 收起時(shí)顯示文字
/// </summary>
private string _descriptionWhenFold = "展開";
///<summary>
/// 收起時(shí)顯示文字
///</summary>
[System.ComponentModel.Description("收起時(shí)顯示文字")]
public string DescriptionWhenFold
{
get
{
return _descriptionWhenFold;
}
set
{
_descriptionWhenFold = value;
}
}
/// <summary>
/// 展開時(shí)高度
/// </summary>
private int _heightWhenExpand = 85;
///<summary>
/// 展開時(shí)高度
///</summary>
[DefaultValue(85)]
[System.ComponentModel.Description("展開時(shí)高度")]
public int HeightWhenExpand
{
get
{
return _heightWhenExpand;
}
set
{
_heightWhenExpand = value;
}
}
/// <summary>
/// 展開時(shí)顯示文字
/// </summary>
private string _descriptionWhenExpand = "收起";
///<summary>
/// 展開時(shí)顯示文字
///</summary>
[System.ComponentModel.Description("展開時(shí)顯示文字")]
public string DescriptionWhenExpand
{
get
{
return _descriptionWhenExpand;
}
set
{
_descriptionWhenExpand = value;
}
}
/// <summary>
/// 點(diǎn)擊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ù)父容器高度判斷父容器應(yīng)是收起還是展開
if (ControllerStatus == ControllerStatusEnum.FOLD)
{
Expand();
}
else
{
Fold();
}
}
}
}
}

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

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

各屬性說(shuō)明如下:

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

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

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

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

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

HeightController控件使用效果如下:

收起時(shí)界面:

展開時(shí)界面:

DEMO程序下載地址:

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

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

上一篇:c# EnumHelper枚舉常用操作類

欄    目:C#教程

下一篇:使用TypeScript開發(fā)微信小程序的方法

本文標(biāo)題:使用C#語(yǔ)言實(shí)現(xiàn)的查詢條件界面展開和收起功能

本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/6179.html

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有