2

我正在进行一个小项目,我尝试制作自己的网络浏览器。

我发现没有“新标签”功能的网络浏览器毫无价值,所以我认为我可以将按钮用作标签,每次按“ctrl + T”时都会出现一个新按钮。

我遇到的问题是: - 按钮数组,每次按“ctrl + T”时我都可以生成一个新按钮

- 当按钮被生成时,它应该是可点击的并且在点击时被禁用,直到另一个选项卡(按钮)被点击。


目前我专注于让 1 个选项卡工作,所以这里有一个例子:

    private void TB_Address_KeyPress(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.T && e.Modifiers == Keys.Control)
        {
            Button tabButton = new Button();
            tabButton = new System.Windows.Forms.Button();
            tabButton.BackColor = System.Drawing.SystemColors.ActiveCaptionText;
            tabButton.Cursor = System.Windows.Forms.Cursors.Hand;
            tabButton.ForeColor = System.Drawing.Color.Lime;
            tabButton.Location = new System.Drawing.Point(154, 32);
            tabButton.Name = "tabButton";
            tabButton.Size = new System.Drawing.Size(152, 23);
            tabButton.TabIndex = 13;
            tabButton.Text = "Tab 2";
            tabButton.UseVisualStyleBackColor = false;
            tabButton.Click += new System.EventHandler(this.tabButton_Click);
            Controls.Add(tabButton);
        }
    }

我也有这个点击功能:

    private void tabButton_Click(object sender, EventArgs e)
    {
        tab_1.Enabled = true;
        tabButton.Enabled = false;
    }

“tab_1”是在设计模式中创建的按钮。“tabButton.Enabled”被标记为红色,因为它找不到 tabButton。我明白为什么找不到它。但我不知道如何以一种好的方式解决这个问题。

4

2 回答 2

4

您正在使用此行将 tabButton_Click 分配给所有按钮:

 tabButton.Click += new System.EventHandler(this.tabButton_Click);

只需将发送者转换为按钮,您将获得触发事件的按钮:

void tabButton_Click(object sender, EventArgs e)
{
  Button buttonSender = (Button) sender;
  buttonSender.Enabled=false;
}

您没有找到"tab_1",因为它不是tabButton_Click范围内的有效名称。这就是为什么必须将 sender 对象转换为 WindowsForms Button,然后更改其属性的原因。

于 2013-07-04T07:21:25.043 回答
0

我将采用不同的方法。创建最初需要的所有按钮。

很抱歉浪费您的时间。

于 2013-07-04T08:02:12.253 回答