アプリケーションによくあるF11キーを押すとフルスクリーンとウィンドウを切り替える機能を再現したい。
フルスクリーン時はメニューバーを隠れるが、マウスカーソルが上端に近づくとメニューバーが一時的に表示される。
また、メニュー項目の「フルスクリーン」は、フルスクリーン時にチェックをつける。
ソース
//
// フルスクリーン
//
using System;
using System.Windows.Forms;
using System.Drawing;
// コンパイル
// csc /t:winexe FullScreen.cs
class Form1 : Form {
Panel panel = new Panel {
Dock = DockStyle.Fill,
};
PictureBox picbox = new PictureBox {
Dock = DockStyle.Fill,
SizeMode = PictureBoxSizeMode.Zoom,
};
MenuStrip menuBar = new MenuStrip(); // メニューバー
ToolStripMenuItem menuView = new ToolStripMenuItem {
Text = "表示",
};
ToolStripMenuItem menuFullScreen = new ToolStripMenuItem {
Text = "フルスクリーンF11",
};
// フルスクリーン項目クリックイベント
void menuFullScreen_Click(Object o, EventArgs e) {
var item = (ToolStripMenuItem)o;
if (item.Checked == true) {
// ウィンドウ
FormBorderStyle = FormBorderStyle.Sizable;
WindowState = FormWindowState.Normal;
menuBar.Visible = true;
} else {
// フルスクリーン
FormBorderStyle = FormBorderStyle.None;
WindowState = FormWindowState.Maximized;
menuBar.Visible = false;
}
item.Checked = !(item.Checked);
}
// Form1_KeyDownイベント
void Form1_KeyDown(Object o, KeyEventArgs e) {
switch(e.KeyCode) {
case Keys.F11:
menuFullScreen_Click(menuFullScreen, e);
break;
}
}
// Picbox_MouseMoveイベント
void Picbox_MouseMove(object o, MouseEventArgs e) {
if (menuFullScreen.Checked == false) return;
if (e.Y == 0) {
menuBar.Visible = true;
} else {
menuBar.Visible = false;
}
}
// コンストラクタ
Form1() {
//picbox.Image = new Bitmap(@"H:\Pictures\202009291013.PNG");
panel.Controls.Add(picbox);
menuView.DropDownItems.Add(menuFullScreen);
menuBar.Items.Add(menuView);
Controls.AddRange(new Control[]{menuBar, panel});
// イベント
menuFullScreen.Click += menuFullScreen_Click;
this.KeyDown += Form1_KeyDown;
picbox.MouseMove += Picbox_MouseMove;
}
// エントリーポイント
[STAThread]
static void Main() {
Application.Run(new Form1());
}
}
フルスクリーン時に一時的にメニューバーを表示させる方法がこれじゃない気がするが、まぁとりあえず。
コメント