2009-10-20 27 views
16

Tôi đang tìm một Nút chia trong .NET WinForms. Các loại mà một bên là một nút và phía bên kia có một nút thả xuống.Nút chia nhỏ trong .NET Winforms

Tôi thấy chúng được sử dụng trên tất cả các cửa sổ, như trong cửa sổ Visual Studio Save As, vì vậy tôi đã tìm thấy chúng phải có sự kiểm soát trong một số thư viện.

Tôi biết có một cho các công cụ, nhưng tôi cần một cái có thể sử dụng ngoài các chi tiết công cụ.

Có thư viện của Microsoft có thư viện nào hoặc tốt nhất là thư viện miễn phí không? Tôi đang sử dụng .NET 3.5

Đối với một ví dụ: Example Button

+0

Hà, tôi đã không nhận ra rằng hình ảnh là một từ NET l ibrary. Tôi đã thực hiện tìm kiếm hình ảnh trên nút chia nhỏ của google và chỉ chọn một hình ảnh đẹp nhất mà tôi tìm thấy. – Jamiegs

Trả lời

4

Bạn có thể làm một phiên bản đơn giản chính mình, sử dụng hình ảnh của nút. Tôi có lớp học của riêng tôi có nguồn gốc từ Button.

tôi thiết lập hình ảnh (đó là một mũi tên xuống) như sau:

{ 
    this.ImageAlign = System.Drawing.ContentAlignment.MiddleRight; 
    this.Image = YourResources.split_button; // Your down-arrow image 

    this.TextImageRelation = System.Windows.Forms.TextImageRelation.TextBeforeImage; 
} 


protected override void OnClick(EventArgs e) 
{ 
    var clickPos = this.PointToClient(new System.Drawing.Point(MousePosition.X, MousePosition.Y)); 

    // If click is over the right-hand portion of the button show the menu 
    if (clickPos.X >= (Size.Width - Image.Width)) 
     ShowMenuUnderControl() 
    else 
     base.OnClick(e); 
} 

// If you want right-mouse click to invoke the menu override the mouse up event 
protected override void OnMouseUp(MouseEventArgs mevent) 
{ 
    if ((mevent.Button & MouseButtons.Right) != 0) 
     ShowMenuUnderControl(); 
    else 
     base.OnMouseUp(mevent); 
} 

// Raise the context menu 
public void ShowMenuUnderControl() 
{ 
    splitMenuStrip.Show(this, new Point(0, this.Height), ToolStripDropDownDirection.BelowRight); 
} 

Nếu bạn cũng muốn một biểu tượng, như trong OP, bạn có thể sử dụng một BackgroundImage và phù hợp đệm, như vậy :

this.BackgroundImageLayout = ImageLayout.None; 
this.BackgroundImage = YourResources.ButtonIcon; 

// Add padding so the text doesn't overlay the background image 
this.Padding = new Padding(
    this.Padding.Left + this.BackgroundImage.Width, 
    this.Padding.Top, 
    this.Padding.Right, 
    this.Padding.Bottom); 

Dưới đây là một nút của tôi trong hành động:
c# winforms split button with menu and arrow and icon

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