2012-06-21 28 views
6

Tôi muốn có thể thêm nút trợ giúp vào biểu mẫu chiến thắng, nhưng giữ nút tối đa hóa và thu nhỏ, nhưng tiêu chuẩn cửa sổ là tắt cả hai để có thể hiển thị nút trợ giúp .Thêm nút trợ giúp, nhưng giữ tối đa và giảm thiểu

Đã có câu hỏi tương tự: How to include help '?' in title bar of winform - nhưng trong câu hỏi đó, người đã đặt câu hỏi là nội dung bằng cách xóa 2 nút đó để được trợ giúp hiển thị.

Có cách nào để tôi có thể có các nút trợ giúp, tối đa, phút và đóng cùng một lúc không?

Cảm ơn.

+1

Có, nhưng bạn đã đọc câu trả lời đó chưa? Nó gợi ý rằng bạn sẽ phải tự tạo lại thanh tiêu đề. Đó là rất nhiều công việc cho ít được như vậy. – LarsTech

+0

@LarsTech - Tôi đã hy vọng có một cách mà không hoàn toàn giải mã biên giới. – Axxelsian

Trả lời

6

Windows không hỗ trợ hiển thị cả hai. Giải pháp thay thế là cung cấp nút của riêng bạn để kích hoạt cùng một hành động. Đặt nó ở đâu đó gần góc trên bên phải. Bạn kích hoạt điều này bằng cách gửi cho mình một thông báo WM_SYSCOMMAND, giống như nút trợ giúp chuẩn. Như thế này:

private void Help_Click(object sender, EventArgs e) { 
     Help.Capture = false; 
     SendMessage(this.Handle, WM_SYSCOMMAND, (IntPtr)SC_CONTEXTHELP, IntPtr.Zero); 
    } 

    private const int WM_SYSCOMMAND = 0x112; 
    private const int SC_CONTEXTHELP = 0xf180; 
    [System.Runtime.InteropServices.DllImport("user32.dll")] 
    private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp); 

Giả định rằng nút đó là "Trợ giúp".

+0

Tôi không nhận ra rằng tôi có thể sử dụng nút mà tôi tạo để kích hoạt cùng một hành động. Cảm ơn. – Axxelsian

+0

Trên thực tế, có vẻ như các cửa sổ hỗ trợ hiển thị cả hai, như bạn có thể thấy bằng cách mở phiên bản Word mới nhất. Trong thực tế, họ thậm chí còn đặt một nút khác trong đó để kiểm soát băng. Chỉ vì lý do nào đó, điều này không được hỗ trợ đúng trong Windows Forms ... – glopes

+2

Ứng dụng văn phòng sử dụng khung tùy chỉnh, không phải khung cửa sổ Windows chuẩn. Những điều tốt đẹp bạn có thể làm khi bạn có hàng trăm lập trình viên làm việc trên một sản phẩm. –

1

Một cách để làm điều này là vẽ đường viền của riêng bạn.

FormBorderStyle = None 

Bây giờ, hãy xây dựng khu vực phụ đề của riêng bạn. Điều này không quan trọng vì bạn phải xử lý các sự kiện kéo kích thước kéo, minh bạch nếu bạn muốn các góc tròn, v.v.

Các vấn đề liên quan