Tôi đã đọc nhận xét của bạn liên quan đến phản hồi của tôi và có thể làm trống một giải pháp hoàn chỉnh hơn cho bạn. Tôi chạy nhanh và dường như có hành vi mà bạn muốn. Thay vì bắt nguồn winforms bạn từ Form, xuất phát từ lớp này:
using System;
using System.Windows.Forms;
using System.ComponentModel;
namespace NoMinimizeTest
{
public class MinimizeControlForm : Form
{
private const int WM_SYSCOMMAND = 0x0112;
private const int SC_MINIMIZE = 0xf020;
protected MinimizeControlForm()
{
AllowMinimize = true;
}
protected override void WndProc(ref Message m)
{
if (!AllowMinimize)
{
if (m.Msg == WM_SYSCOMMAND)
{
if (m.WParam.ToInt32() == SC_MINIMIZE)
{
m.Result = IntPtr.Zero;
return;
}
}
}
base.WndProc(ref m);
}
[Browsable(true)]
[Category("Behavior")]
[Description("Specifies whether to allow the window to minimize when the minimize button and command are enabled.")]
[DefaultValue(true)]
public bool AllowMinimize
{
get;
set;
}
}
}
Bạn có thể làm nhiều hơn một chút nếu bạn muốn để có thể quyết định cho phép giảm thiểu tại thời điểm nhấp chuột được gửi, ví dụ:
using System;
using System.Windows.Forms;
using System.ComponentModel;
namespace NoMinimizeTest
{
public class MinimizeControlForm : Form
{
private const int WM_SYSCOMMAND = 0x0112;
private const int SC_MINIMIZE = 0xf020;
protected MinimizeControlForm()
{
}
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_SYSCOMMAND)
{
if (m.WParam.ToInt32() == SC_MINIMIZE && !CheckMinimizingAllowed())
{
m.Result = IntPtr.Zero;
return;
}
}
base.WndProc(ref m);
}
private bool CheckMinimizingAllowed()
{
CancelEventArgs args = new CancelEventArgs(false);
OnMinimizing(args);
return !args.Cancel;
}
[Browsable(true)]
[Category("Behavior")]
[Description("Allows a listener to prevent a window from being minimized.")]
public event CancelEventHandler Minimizing;
protected virtual void OnMinimizing(CancelEventArgs e)
{
if (Minimizing != null)
Minimizing(this, e);
}
}
}
Để biết thêm thông tin về thông báo cửa sổ này, hãy xem MSDN article about it.
Điều này ẩn hộp thu nhỏ, nhưng không làm xám nó ra. –
Hmmm, kỳ lạ. Tôi đã thử nghiệm nó và nó màu xám nó ra. Nó vẫn ở đó, bán trong suốt và bạn không thể nhấp vào nó. – Coincoin
Phụ thuộc vào chủ đề cửa sổ của bạn. Nếu nút thu nhỏ được bật, bạn sẽ nhận được một hình ảnh. Nếu bị tắt, bạn sẽ có một hình ảnh khác. Hình ảnh đó có thể là không có gì, vì vậy sau đó bạn thậm chí không thấy một nút greayed-out. – Eyal