Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Button có nút thà xuống

  1. #1
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà Nội
    Bài viết
    361

    Mặc định Button có nút thà xuống

    Mình muốn cho vào form 1 button như hình , có nút thà xuống cạnh nút bấm :
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		dropdown-button.png
Lần xem:	31
Size:		3.7 KB
ID:		5342
    Nhờ mọi người giúp
    Blog tổng quan kiến thức về viễn thông : http://tongquanvienthong.blogspot.com/

    mSPDict từ điển android hỗ trợ liên kết tra trên các trình đọc sách điện tử và tra sách giấy thông qua camera
    http://www.tinhte.vn/threads/691731/

  2. #2
    No Avatar
    bao Khách

    Cái đó là SplitButton

  3. #3
    Ngày gia nhập
    10 2006
    Bài viết
    107

    Trong mỗi Button có thuộc tính Style đó, đưa nó về giá trị là DropDownButton là được
    Nói là một chuyện, làm là một chuyện. Chi bằng ta làm xong rồi hãy nói như vậy thì nói và làm sẽ là một chuyện.

  4. #4
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà Nội
    Bài viết
    361

    Mọi người hướng dẫn kỹ hơn được không , không có thuộc tính nào tên style .
    SplitButton , tìm trong phần choose item rồi, không có ???
    Blog tổng quan kiến thức về viễn thông : http://tongquanvienthong.blogspot.com/

    mSPDict từ điển android hỗ trợ liên kết tra trên các trình đọc sách điện tử và tra sách giấy thông qua camera
    http://www.tinhte.vn/threads/691731/

  5. #5
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    SplitButton tự tạo
    PHP Code:
    using System;

    using System.Collections.Generic;

    using System.Text;

    using System.Windows.Forms;

    using System.Windows.Forms.VisualStyles;

    using System.Drawing;

    using System.ComponentModel;

     

    namespace 
    Microsoft.Samples {

        public class 
    SplitButton Button {

            private 
    PushButtonState _state;

            private const 
    int PushButtonWidth 14;

            private static 
    int BorderSize SystemInformation.Border3DSize.Width 2;

            private 
    bool skipNextOpen false;

            private 
    Rectangle dropDownRectangle = new Rectangle();

            private 
    bool showSplit true;

     

            public 
    SplitButton() {

                
    this.AutoSize true;

            }

            [
    DefaultValue(true)]

            public 
    bool ShowSplit {

                
    set {

                    if (
    value != showSplit) {

                        
    showSplit value;

                        
    Invalidate();

                        if (
    this.Parent != null) {

                            
    this.Parent.PerformLayout();

                        }

                    }

                }

            }

     

            private 
    PushButtonState State {

                
    get {

                    return 
    _state;

                }

                
    set {

                    if (!
    _state.Equals(value)) {

                        
    _state value;

                        
    Invalidate();

                    }

                }

            }

     

            public 
    override Size GetPreferredSize(Size proposedSize) {

                
    Size preferredSize base.GetPreferredSize(proposedSize);

                if (
    showSplit && !string.IsNullOrEmpty(Text) && TextRenderer.MeasureText(TextFont).Width PushButtonWidth preferredSize.Width) {

                    return 
    preferredSize + new Size(PushButtonWidth BorderSize 20);

                }

                return 
    preferredSize;

            }

     

            protected 
    override bool IsInputKey(Keys keyData) {

                if (
    keyData.Equals(Keys.Down) && showSplit) {

                    return 
    true;

                }

                else {

                    return 
    base.IsInputKey(keyData);

                }

            }

     

            protected 
    override void OnGotFocus(EventArgs e) {

                if (!
    showSplit) {

                    
    base.OnGotFocus(e);

                    return;

                }

     

                if (!
    State.Equals(PushButtonState.Pressed) && !State.Equals(PushButtonState.Disabled)) {

                    
    State PushButtonState.Default;

                }

            }

     

            protected 
    override void OnKeyDown(KeyEventArgs kevent) {

                if (
    showSplit) {

                    if (
    kevent.KeyCode.Equals(Keys.Down)) {

                        
    ShowContextMenuStrip();

                    }

                    else if (
    kevent.KeyCode.Equals(Keys.Space) && kevent.Modifiers == Keys.None) {

                        
    State PushButtonState.Pressed;

                    }

                }

     

                
    base.OnKeyDown(kevent);

            }

     

            protected 
    override void OnKeyUp(KeyEventArgs kevent) {

                if (
    kevent.KeyCode.Equals(Keys.Space)) {

                    if (
    Control.MouseButtons == MouseButtons.None) {

                        
    State PushButtonState.Normal;

                    }

                }

                
    base.OnKeyUp(kevent);

            }

     

            protected 
    override void OnLostFocus(EventArgs e) {

                if (!
    showSplit) {

                    
    base.OnLostFocus(e);

                    return;

                }

                if (!
    State.Equals(PushButtonState.Pressed) && !State.Equals(PushButtonState.Disabled)) {

                    
    State PushButtonState.Normal;

                }

            }

     

            protected 
    override void OnMouseDown(MouseEventArgs e) {

                if (!
    showSplit) {

                    
    base.OnMouseDown(e);

                    return;

                }

     

                if (
    dropDownRectangle.Contains(e.Location)) {

                    
    ShowContextMenuStrip();

                }

                else {

                    
    State PushButtonState.Pressed;

                }

            }

     

            protected 
    override void OnMouseEnter(EventArgs e) {

                if (!
    showSplit) {

                    
    base.OnMouseEnter(e);

                    return;

                }

     

                if (!
    State.Equals(PushButtonState.Pressed) && !State.Equals(PushButtonState.Disabled)) {

                    
    State PushButtonState.Hot;

                }

            }

     

            protected 
    override void OnMouseLeave(EventArgs e) {

                if (!
    showSplit) {

                    
    base.OnMouseLeave(e);

                    return;

                }

     

                if (!
    State.Equals(PushButtonState.Pressed) && !State.Equals(PushButtonState.Disabled)) {

                    if (
    Focused) {

                        
    State PushButtonState.Default;

                    }

                    else {

                        
    State PushButtonState.Normal;

                    }

                }

            }

     

            protected 
    override void OnMouseUp(MouseEventArgs mevent) {

                if (!
    showSplit) {

                    
    base.OnMouseUp(mevent);

                    return;

                }

     

                if (
    ContextMenuStrip == null || !ContextMenuStrip.Visible) {

                    
    SetButtonDrawState();

                    if (
    Bounds.Contains(Parent.PointToClient(Cursor.Position)) && !dropDownRectangle.Contains(mevent.Location)) {

                        
    OnClick(new EventArgs());

                    }

                }

            }

     

            protected 
    override void OnPaint(PaintEventArgs pevent) {

                
    base.OnPaint(pevent);

     

                if (!
    showSplit) {

                    return;

                }

     

                
    Graphics g pevent.Graphics;

                
    Rectangle bounds this.ClientRectangle;

     

                
    // draw the button background as according to the current state.

                
    if (State != PushButtonState.Pressed && IsDefault && !Application.RenderWithVisualStyles) {

                    
    Rectangle backgroundBounds bounds;

                    
    backgroundBounds.Inflate(-1, -1);

                    
    ButtonRenderer.DrawButton(gbackgroundBoundsState);

     

                    
    // button renderer doesnt draw the black frame when themes are off =(

                    
    g.DrawRectangle(SystemPens.WindowFrame00bounds.Width 1bounds.Height 1);

     

                }

                else {

                    
    ButtonRenderer.DrawButton(gboundsState);

                }

                
    // calculate the current dropdown rectangle.

                
    dropDownRectangle = new Rectangle(bounds.Right PushButtonWidth 1BorderSizePushButtonWidthbounds.Height BorderSize 2);

     

                
    int internalBorder BorderSize;

                
    Rectangle focusRect =

                    new 
    Rectangle(internalBorder,

                                  
    internalBorder,

                                  
    bounds.Width dropDownRectangle.Width internalBorder,

                                  
    bounds.Height - (internalBorder 2));

     

               

                
    bool drawSplitLine = (State == PushButtonState.Hot || State == PushButtonState.Pressed || !Application.RenderWithVisualStyles);

     

                if (
    RightToLeft == RightToLeft.Yes) {

                    
    dropDownRectangle.bounds.Left 1;

                    
    focusRect.dropDownRectangle.Right;

                    if (
    drawSplitLine) {

                        
    // draw two lines at the edge of the dropdown button

                        
    g.DrawLine(SystemPens.ButtonShadowbounds.Left PushButtonWidthBorderSizebounds.Left PushButtonWidthbounds.Bottom BorderSize);

                        
    g.DrawLine(SystemPens.ButtonFacebounds.Left PushButtonWidth 1BorderSizebounds.Left PushButtonWidth 1bounds.Bottom BorderSize);

                    }

                }

                else {

                    if (
    drawSplitLine) {

                        
    // draw two lines at the edge of the dropdown button

                        
    g.DrawLine(SystemPens.ButtonShadowbounds.Right PushButtonWidthBorderSizebounds.Right PushButtonWidthbounds.Bottom BorderSize);

                        
    g.DrawLine(SystemPens.ButtonFacebounds.Right PushButtonWidth 1BorderSizebounds.Right PushButtonWidth 1bounds.Bottom BorderSize);

                    }

     

                }

     

                
    // Draw an arrow in the correct location

                
    PaintArrow(gdropDownRectangle);

     

                
    // Figure out how to draw the text

                
    TextFormatFlags formatFlags TextFormatFlags.HorizontalCenter TextFormatFlags.VerticalCenter;

     

                
    // If we dont' use mnemonic, set formatFlag to NoPrefix as this will show ampersand.

                
    if (!UseMnemonic) {

                    
    formatFlags formatFlags TextFormatFlags.NoPrefix;

                }

                else if (!
    ShowKeyboardCues) {

                    
    formatFlags formatFlags TextFormatFlags.HidePrefix;

                }

     

                if (!
    string.IsNullOrEmpty(this.Text)) {

                    
    TextRenderer.DrawText(gTextFontfocusRectSystemColors.ControlTextformatFlags);

                }

     

                
    // draw the focus rectangle.

     

                
    if (State != PushButtonState.Pressed && Focused) {

                    
    ControlPaint.DrawFocusRectangle(gfocusRect);

                }

            }

     

            private 
    void PaintArrow(Graphics gRectangle dropDownRect) {

                
    Point middle = new Point(Convert.ToInt32(dropDownRect.Left dropDownRect.Width 2), Convert.ToInt32(dropDownRect.Top dropDownRect.Height 2));

     

                
    //if the width is odd - favor pushing it over one pixel right.

                
    middle.+= (dropDownRect.Width 2);

     

                
    Point[] arrow = new Point[] { new Point(middle.2middle.1), new Point(middle.3middle.1), new Point(middle.Xmiddle.2) };

     

                
    g.FillPolygon(SystemBrushes.ControlTextarrow);

            }

     

            private 
    void ShowContextMenuStrip() {

                if (
    skipNextOpen) {

                    
    // we were called because we're closing the context menu strip

                    // when clicking the dropdown button.

                    
    skipNextOpen false;

                    return;

                }

                
    State PushButtonState.Pressed;

     

                if (
    ContextMenuStrip != null) {

                    
    ContextMenuStrip.Closing += new ToolStripDropDownClosingEventHandler(ContextMenuStrip_Closing);

                    
    ContextMenuStrip.Show(this, new Point(0Height), ToolStripDropDownDirection.BelowRight);

                }

            }

     

            
    void ContextMenuStrip_Closing(object senderToolStripDropDownClosingEventArgs e) {

                
    ContextMenuStrip cms sender as ContextMenuStrip;

                if (
    cms != null) {

                    
    cms.Closing -= new ToolStripDropDownClosingEventHandler(ContextMenuStrip_Closing);

                }

     

                
    SetButtonDrawState();

     

                if (
    e.CloseReason == ToolStripDropDownCloseReason.AppClicked) {

                    
    skipNextOpen = (dropDownRectangle.Contains(this.PointToClient(Cursor.Position)));

                }

            }

     

     

            private 
    void SetButtonDrawState() {

                if (
    Bounds.Contains(Parent.PointToClient(Cursor.Position))) {

                    
    State PushButtonState.Hot;

                }

                else if (
    Focused) {

                    
    State PushButtonState.Default;

                }

                else {

                    
    State PushButtonState.Normal;

                }

            }

        }

     


    tham khảo MSDN
    None!

  6. #6
    Ngày gia nhập
    11 2007
    Bài viết
    294

    Mặc định Button có nút thà xuống

    Nếu tienlb muốn nó trên toolbar thì dùng dropdown button trên ToolStrip(ko nhớ rõ ).
    Còn nếu dùng button bình thường thì hình như phải code thêm tí,hoặc là dùng của hãng thứ 3.Cái này để dark tìm lại đã ,ko nhớ quẳng đâu mất tiêu rồi .
    Code của X giống cái này ghê : http://blogs.msdn.com/jfoscoding/articles/491523.aspx
    Nhân thể cái này là split button với WPF : http://blogs.msdn.com/llobo/archive/...on-in-WPF.aspx
    Đã được chỉnh sửa lần cuối bởi darkan : 31-01-2008 lúc 12:40 PM.
    Is the moon rising...

  7. #7
    Ngày gia nhập
    06 2007
    Nơi ở
    Hà Nội
    Bài viết
    361

    Build được cái button này nè , tạo usercontrol , chả biết tạo usercontrol thế nào, từ thủa cha sinh mẹ đẻ có làm bao giờ đâu , tui xoá béng cái file của nó đi, tạo file class mới với nội dung của Xcross (thực ra là của microsoft ) , rồi build , mọi người xem có chạy được không để tui cho vào Project C# . Tạo cái context menu rồi mở cái button này , chỉnh thuộc tính contextmenutrip là cái context đó là được
    Attached Files Attached Files
    Đã được chỉnh sửa lần cuối bởi tienlbhoc : 31-01-2008 lúc 04:02 PM.
    Blog tổng quan kiến thức về viễn thông : http://tongquanvienthong.blogspot.com/

    mSPDict từ điển android hỗ trợ liên kết tra trên các trình đọc sách điện tử và tra sách giấy thông qua camera
    http://www.tinhte.vn/threads/691731/

Các đề tài tương tự

  1. ADO.NET Tạo nút button kết nối file để view
    Gửi bởi phamdankhoi trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 05-06-2013, 06:02 PM
  2. Trả lời: 3
    Bài viết cuối: 11-04-2012, 09:26 AM
  3. Chương trình tính 2 phân số, nhưng các số nhập từ nút button, xử lý thế nào?
    Gửi bởi thanhtuann trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 03-11-2011, 09:59 AM
  4. click nút button 1 phát - lập tức các dòng trong chế độ Edit
    Gửi bởi hocphp_1998 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 04-12-2010, 11:02 AM
  5. Tạo button có chức năng như nút Refresh?
    Gửi bởi whamy04 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 01-07-2007, 07:45 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn