2009-10-20 11 views
16

Poszukuję przycisku podziału w WinFormach .NET. Ten rodzaj, w którym jedna strona jest przyciskiem, a druga strona ma przycisk rozwijany.Przycisk podziału w .NET Winforms

Widzę je wszystkie używane w oknach, tak jak w oknie Visual Studio Save As, więc pomyślałem, że muszą mieć kontrolę w pewnej bibliotece.

Wiem, że jest jeden na paski narzędziowe, ale potrzebuję takiego, który można użyć poza paskiem narzędzi.

Czy istnieje biblioteka Microsoft, która ma jedną lub najlepiej wolną bibliotekę? Używam .NET 3.5

Dla przykładu: Example Button

+0

Ha, nie zdawałem sobie sprawy, że obraz był z .NET l ibrary. Właśnie zrobiłem wyszukiwanie w wyszukiwarce Google na podzielonym przycisku i wybrałem najlepiej wyglądający, który znalazłem. – Jamiegs

Odpowiedz

4

Można zrobić prosta wersja siebie, używając obraz przycisku. Mam własną klasę, która pochodzi z Button.

skonfigurować obraz (który jest z strzałką w dół) tak:

{ 
    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); 
} 

Jeśli również chciał ikonę, jak w PO, można użyć BackgroundImage i odpowiednią wyściółkę, tak jak :

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); 

Oto mój przycisk w akcji:
c# winforms split button with menu and arrow and icon