簡體   English   中英

如何創建更多具有相同外觀的按鈕(C#)

[英]How can I create more buttons of the same appearance (C#)

拜托,您能幫我怎樣創建更多外觀相同的按鈕。 我在單獨的類中具有按鈕的圖形結構。 用於在Windows窗體中創建按鈕的功能。

步驟1)圖形按鈕結構的類:

class GraphicClassStructure : GraphicPosition
{
    public Button resetTree = new Button();

    public void CreateClassButtons()
    {
        // Reset tree
        resetTree.BackColor = Color.Transparent;
        resetTree.BackgroundImage = BuildResource.reset;
        resetTree.BackgroundImageLayout = ImageLayout.Stretch;
        resetTree.FlatAppearance.BorderSize = 0;
        resetTree.FlatAppearance.MouseDownBackColor = Color.Transparent;
        resetTree.FlatAppearance.MouseOverBackColor = Color.Transparent;
        resetTree.FlatStyle = FlatStyle.Flat;
        resetTree.Name = "resetTree";
        resetTree.Size = Size[0][5];
        resetTree.UseVisualStyleBackColor = false;
    }
}

贏窗體功能的控制按鈕。

private void classMenu_Click(object sender, EventArgs e)
{
    classStructure.ClassAllButtonsVisible();
    classStructure.CreateClassButtons();
    this.Controls.Add(classStructure.classBackround);

    for (int i = 0; i < 3; i++)
    {
        switch (i)
        {
            case 0:
                classStructure.resetTree.Location = classStructure.Location[0][2];
                break;
            case 1:
                classStructure.resetTree.Location = classStructure.Location[0][3];
                break;
            case 2:
                classStructure.resetTree.Location = classStructure.Location[0][4];
                break;
        }
        classStructure.resetTree.Click += new EventHandler(resetTreeOneEvent_Click);
        classStructure.resetTree.MouseEnter += new EventHandler(resetTree_MouseEnter);
        classStructure.resetTree.MouseLeave += new EventHandler(resetTree_MouseLeave);
        classStructure.resetTree.Tag = i;
        this.Controls.Add(classStructure.resetTree);
    }
}

當前的問題是按鈕的創建在“ GraphicStructure”類中,但是在類中它僅創建一個按鈕。 雖然我可以將窗口形式嵌入到該功能中,但是我想分別具有圖形按鈕和功能。 你能幫我嗎?。

控制:

private void resetTreeOneEvent_Click(object sender, EventArgs e)
{
    Button button = sender as Button;
    if (button != null)
    {
        switch ((int)button.Tag)
        {
            case 0:
                // First Button Clicked
                break;
            case 1:
                // Second Button Clicked
                break;
            case 2:
                // Third Button Clicked
                break;
        }
    }
}

還是第二個想法。 我創建了一個不執行任何操作但具有圖形結構的按鈕。 然后創建三個已經在做某事但又沒有圖形的按鈕,只需要讓這些按鈕執行從圖形按鈕克隆的操作即可。

我嘗試使用它,但是我仍然只看到一個按鈕:

private void classMenu_Click(object sender, EventArgs e)
{
    classStructure.ClassAllButtonsVisible();
    classStructure.CreateClassButtons();
    this.Controls.Add(classStructure.classBackround);

    for (int i = 0; i < 3; i++)
    {
        Button button = new Button();
        button = classStructure.resetTree;
        switch (i)
        {
            case 0:
                button.Location = classStructure.Location[0][2];
                break;
            case 1:
                button.Location = classStructure.Location[0][3];
                break;
            case 2:
                button.Location = classStructure.Location[0][4];
                break;
        }
        button.Click += new EventHandler(resetTreeOneEvent_Click);
        button.MouseEnter += new EventHandler(resetTree_MouseEnter);
        button.MouseLeave += new EventHandler(resetTree_MouseLeave);
        button.Tag = i;
        this.Controls.Add(button);
    }
}

第二個想法的工作(我看到了三個按鈕),如果我對此進行了評論:

button = classStructure.resetTree;

但是,如果我注釋了此零件代碼,則所有三個按鈕再次都沒有圖形結構。

如果您需要外觀相同的按鈕,請創建繼承自Button自定義按鈕,並使用它代替標准Button

public class TreeButton : Button
{
    public TreeButton()
    {
        BackColor = Color.Transparent;
        BackgroundImage = /* set some image  */
        BackgroundImageLayout = ImageLayout.Stretch;
        FlatAppearance.BorderSize = 0;
        FlatAppearance.MouseDownBackColor = Color.Transparent;
        FlatAppearance.MouseOverBackColor = Color.Transparent;
        FlatStyle = FlatStyle.Flat;       
        Size = /* set size */
        UseVisualStyleBackColor = false;
    }
}

如果希望按鈕的行為不同,則將不同的click事件處理程序分配給不同的按鈕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM