フォームがフチなしモードに設定されている場合(設定方法:FormBorderStyle = None)、デフォルトでは自由にドラッグすることはできず、最大化、最小化、閉じるなどのボタンはありません。
1)境界線を削除するウィンドウを選択し、F4キーを押してウィンドウのプロパティを呼び出します。
2)プロパティボックスでFormBorderStyleを見つけ、[なし]を選択します。
1つは、フォームドラッグを実現する
方法1:APIを呼び出す
using System.Runtime.InteropServices;
[DllImport("user32.dll")]
public static extern bool ReleaseCapture();
[DllImport("user32.dll")]
public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
public const int WM_SYSCOMMAND = 0x0112;
public const int SC_MOVE = 0xF010;
public const int HTCAPTION = 0x0002;
//添加窗体的MouseDown事件,并编写如下代码
private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
ReleaseCapture();
SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
}
方法2:フォームMouseDown、MouseMove、MouseUpイベントを通じてフォームの動きを実現する
Point mouseOff;//鼠标移动位置变量
bool leftFlag;//标签是否为左键
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
mouseOff = new Point(-e.X, -e.Y); //得到变量的值
leftFlag = true; //点击左键按下时标注为true;
}
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (leftFlag)
{
Point mouseSet = Control.MousePosition;
mouseSet.Offset(mouseOff.X, mouseOff.Y); //设置移动后的位置
Location = mouseSet;
}
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
if (leftFlag)
{
leftFlag = false;//释放鼠标后标注为false;
}
}
方法3:パネルのMouseDownイベントとMouseMoveイベントを介してフォームを移動します
private Point mPoint;
/// <summary>
/// 鼠标按下
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
mPoint = new Point(e.X, e.Y);
}
/// <summary>
/// 鼠标移动
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.Location = new Point(this.Location.X + e.X - mPoint.X, this.Location.Y + e.Y - mPoint.Y);
}
}
総括する:
(1)フォームのドラッグを実現するには、通常、フォームのヘッドをクリックしてフォームを移動します。したがって、フォームヘッドの最上層がコントロールである場合は、コントロールのMouseDown、MouseMove、MouseUpイベントを記述します。
(2)上記の3つの方法のうち、2番目の方法は3番目の方法と同じ効果があります。2番目と3番目の方法がドラッグしている間、最初の方法はウィンドウをドラッグするときにオーバーラップしないことに注意してください。オーバーラップがあります。移動時の窓;
2.最大化、最小化、および閉じる
フォームにラベルまたはボタンを配置し、対応するクリックイベントを登録することで、イベントに関数が実装されます。
1.最大化
//窗体最大化
private void label1_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Maximized;
}
2、最小化
//窗体最小化
private void label2_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}
3.閉じる
//关闭窗体
private void label3_Click(object sender, EventArgs e)
{
this.Close();
}
3つの同様のブログ
次のブロガーに感謝します: