Tôi biết rằng tôi có thể lấy trạng thái hiện tại bằng WindowState, nhưng tôi muốn biết liệu có bất kỳ sự kiện nào xảy ra khi người dùng cố gắng thu nhỏ biểu mẫu hay không.
Tôi biết rằng tôi có thể lấy trạng thái hiện tại bằng WindowState, nhưng tôi muốn biết liệu có bất kỳ sự kiện nào xảy ra khi người dùng cố gắng thu nhỏ biểu mẫu hay không.
Câu trả lời:
Bạn có thể sử dụng sự kiện Thay đổi kích thước và kiểm tra Thuộc tính Forms.WindowState trong sự kiện.
private void Form1_Resize ( object sender , EventArgs e )
{
if ( WindowState == FormWindowState.Minimized )
{
// Do some stuff
}
}
Để truy cập trước khi biểu mẫu được thu nhỏ, bạn sẽ phải tham gia vào thủ tục WndProc:
private const int WM_SYSCOMMAND = 0x0112;
private const int SC_MINIMIZE = 0xF020;
[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
protected override void WndProc(ref Message m)
{
switch(m.Msg)
{
case WM_SYSCOMMAND:
int command = m.WParam.ToInt32() & 0xfff0;
if (command == SC_MINIMIZE)
{
// Do your action
}
// If you don't want to do the default action then break
break;
}
base.WndProc(ref m);
}
Để phản ứng sau khi biểu mẫu đã được thu nhỏ, móc vào Resize
sự kiện như các câu trả lời khác đã chỉ ra (bao gồm ở đây để hoàn thiện):
private void Form1_Resize (object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
// Do your action
}
}
Tôi không biết về một sự kiện cụ thể , nhưng Resize
sự kiện sẽ kích hoạt khi biểu mẫu được thu nhỏ, bạn có thể kiểm tra FormWindowState.Minimized
sự kiện đó
Đối với những người tìm kiếm sự kiện thu nhỏ cửa sổ WPF:
Nó hơi khác một chút. Để gọi lại, hãy sử dụng WindowState:
private void Form1_Resize(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
// Do some stuff
}
}
Sự kiện sử dụng là StateChanged (thay vì Resize):
public Main()
{
InitializeComponent();
this.StateChanged += Form1_Resize;
}