首頁>Program>source

是否可以在C#winForms中建立切換按钮? 我知道您可以使用CheckBox控制元件並將其Appearance屬性設置為" Button",但是它看起来並不正確.我希望它在按下時看起来凹陷而不是平坦.有什麼想法吗?

最新回復
  • 5月前
    1 #

    您可以只使用 CheckBox 並將其外观設置為 Button

    CheckBox checkBox = new System.Windows.Forms.CheckBox(); 
    checkBox.Appearance = System.Windows.Forms.Appearance.Button;
    

  • 5月前
    2 #

    檢查FlatStyle屬性.將其設置為"系統"会使该複選框在我的環境中下沉。

  • 5月前
    3 #

    如何處理?

    假設您已引用System.windows.Forms。

    var cbtnToggler = new CheckBox();
    cbtnToggler.Appearance = Appearance.Button;
    cbtnToggler.TextAlign = ContentAlignment.MiddleCenter;
    cbtnToggler.MinimumSize = new Size(75, 25); //To prevent shrinkage!
    

    希望這会有所帮助;)

  • 5月前
    4 #

    thers是建立切換按钮的簡單方法.我在vs2010中进行了測試.太完美了。

    ToolStripButton具有"已檢查"屬性和" CheckOnClik"屬性.您可以將其用作切換按钮

    tbtnCross.CheckOnClick = true;
    

    OR

       tbtnCross.CheckOnClick = false;
        tbtnCross.Click += new EventHandler(tbtnCross_Click);
        .....
        void tbtnCross_Click(object sender, EventArgs e)
        {
            ToolStripButton target = sender as ToolStripButton;
            target.Checked = !target.Checked;
        }
    

    此外,您可以建立如下所示的切換按钮列表:

           private void Form1_Load(object sender, EventArgs e)
        {
            arrToolView[0] = tbtnCross;
            arrToolView[1] = tbtnLongtitude;
            arrToolView[2] = tbtnTerrain;
            arrToolView[3] = tbtnResult;
            for (int i = 0; i<arrToolView.Length; i++)
            {
                arrToolView[i].CheckOnClick = false;
                arrToolView[i].Click += new EventHandler(tbtnView_Click);
            }
            InitTree();
        }
        void tbtnView_Click(object sender, EventArgs e)
        {
            ToolStripButton target = sender as ToolStripButton;
            if (target.Checked) return;
            foreach (ToolStripButton btn in arrToolView)
            {
                    btn.Checked = false;
                    //btn.CheckState = CheckState.Unchecked;
            }
            target.Checked = true;
            target.CheckState = CheckState.Checked;
        }
    

  • 5月前
    5 #

    如果您不介意將其託管在ToolStripContainer中,則也可以考虑使用ToolStripButton控制元件.我认為它可以原生支援受壓和不受壓狀態。

  • SQL中最高和最低關鍵字之間的區別
  • unit testing:為什麼xUnit Runner無法找到我的測試