windows form에서 숨겨진 패널 만들기
8718 단어 제어hidePanelVisualStudioWindowsC#
하고 싶은 일
가장자리에 숨겨지는 패널 만들기
환경
사용할 컨트롤
3가지만 사용
* Panel panel1 이것이 숨기는 패널
* Timer timer1 숨기는 애니메이션용 타이머
* Label label1 클릭 이벤트로 닫거나 열기
만들기
컨트롤 배치
form에 panel1을 배치합니다.
[속성]
* BackColor = "ActiveCaption"
* Dock = "Left"
panel1에 라벨로 닫거나 열기 위한 노브를 만듭니다.
[속성]
* AutoSize = "False"
* BackColor = "ControlDarkDark"
* Dock = "Right"
* Font = 메리오, 12pt, style=Bold
* ForeColor = "White"
*text="<"
*TextAlign="MiddleCenter"
타이머를 설치합니다.
[속성]
Interval = 10 이 수치가 작을수록 움직임이 빨라집니다.
코딩
사용할 변수, 상수 준비
Form1.cs
public partial class Form1 : Form
{
const int PITCH = 10; // 閉じる(開く)移動幅 小さくするとなめらかになります。
bool _is_hide = false; // 表示状況 true:非表示状態 false:表示状態
int _hidePanelWidth; // 現在の隠れるパネルの幅
Form의 Load 이벤트에서 숨겨진 패널의 현재 너비를 가져옵니다.
Form1.cs-Form1_Load()
private void Form1_Load(object sender, EventArgs e)
{
_hidePanelWidth = this.panel1.Width; // 隠れパネルの幅を取得
}
레이블의 Click 이벤트를 설명합니다.
클릭할 때마다 타이머를 시작합니다.
Form1.cs-Label1_Click()
private void Label1_Click(object sender, EventArgs e)
{
timer1.Start(); // タイマースタート
}
타이머의 Tick 이벤트를 설명합니다.
타이머가 시작되면 Interval에 설정된 시간(ms)마다 Tick 이벤트가 실행됩니다.
Form1.cs-Timer1_Tick()
private void Timer1_Tick(object sender, EventArgs e)
{
// 表示状況により分岐
if (_is_hide)
{ // 閉じているとき
this.panel1.Width = this.panel1.Width + PITCH; // 幅をピッチ分増やす
// 増加後の幅が当初の幅を超えたか
if (this.panel1.Width >= _hidePanelWidth)
{
timer1.Stop(); // タイマーをストップ
this.panel1.Width = _hidePanelWidth; // 当初の幅に再設定
label1.Text = "<"; // つまみの方向を反転
_is_hide = false; // 表示状況を反転
}
}
else
{ // 開いているとき
this.panel1.Width = this.panel1.Width - PITCH; // 幅をピッチ分減らす
// 減少後の幅がつまみの幅を下回った場合
if (this.panel1.Width <= label1.Width)
{
timer1.Stop(); // タイマーをストップ
this.panel1.Width = label1.Width; // つまみ分の幅に再設定
label1.Text = ">"; // つまみの方向を反転
_is_hide = true; // 表示状況を反転
}
}
}
이것으로, 이런 느낌이 됩니다.
조금 지루하지 않기 때문에 버튼으로도 넣어 보겠습니다 ...
아!
버튼의 가장자리가 남아 있습니다.
숨겨진 패널 안에 배치한 컨트롤은 Anchor 를 "Top, Right"로 하는 것으로 해결할 수 있습니다.
제대로 버튼도 숨겼습니다.
Reference
이 문제에 관하여(windows form에서 숨겨진 패널 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tajima440/items/e9cf96e0123aca4d0302텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)