如何在选项卡之间克隆按钮 C# Visual Studio 2015

How to clone button between tabs C# Visual Studio 2015

Example

嗨!如何在其他选项卡上克隆按钮?我需要在多个选项卡中使用相同的按钮,具有相同属性、相同代码、相同事件、相同名称等的相同按钮。

"Compress file" 按钮在 Tab1、Tab4、Tab6 和 Tab8 中将是相同的...将在许多选项卡中执行相同的操作,因此我不想制作新按钮每次。我不想制作 10000 个做同样事情的按钮。

我需要克隆很多按钮,而不仅仅是 "compress file",这就是为什么我不能将 "Compress file" 放在 TabControl 之外并使其不可见或可见的原因。

我正在使用 C# 开发 Visual Studio 2015。

您可能只需要将按钮添加到 TabControl 前面,而不是在其中一个标签页上,这样它将显示在所有标签页上,但如果您必须更改其位置,每次切换到其他标签页时,您都应该以编程方式更改按钮的位置。此外,如果您不需要它显示在某些标签页上,那么您应该将其设置为在该标签页上不可见。 无论如何,我真的不喜欢这样做,但我宁愿在每个选项卡上添加我需要的所有按钮,并将所有按钮连接到相同的事件处理程序上。

注意:如果您无法在选项卡控件前面添加按钮,您可以使用视图 > 其他 Windows > 文档大纲来更改它。

创建一个通用函数,随意添加更多参数以使其更灵活:

void CreateButton(TabControl tc, string text, EventHandler click)
{
    Button button = new Button();
    button.Width = 100;
    button.Height = 100;
    button.ForeColor = Color.Blue;
    button.Text = text;

    button.Click += click;

    tc.Controls.Add(button);
}

用法:

CreateButton(Tab1, "Compress file", Button_Click);

在开发人员代码中创建您的按钮。然后稍后在切换选项卡时使用引用将其添加到每个选项卡的控件中。例如

public MyForm()
{
    Initialize();
    Button MyOneTrickButton = new Button();
    //Create button with all attributes and actions
    ...
}

void MyTabControl_SelectedIndexChanged(object sender, EventArgs e)
{
    MyTabControl.SelectedTab.Controls.Add(MyOneTrickButton);
}

第二个选项是创建一个包含您的按钮的自定义 TabControl,并在将选项卡添加到表单时使用它而不是普通的 TabControl。

向您的项目添加新的用户控件和一个带有 Click 事件的按钮。 后面的代码:

public partial class UserControl1 : UserControl
{
    public UserControl1()
    {
        InitializeComponent();
    }

    // Add some public properties to Caculate
    public string SomeProperties { get; set; }

    private void button1_Click(object sender, EventArgs e)
    {
        // Some tasks that you often do ...........

    }
}

你可以在任何地方使用它。