在Windows窗体中玩按钮

本文关键字:按钮 窗体 Windows | 更新日期: 2023-09-27 18:21:10

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

我发现没有"新标签"功能的网络浏览器毫无价值,所以我想我可以用按钮作为标签,每次按下"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。我理解为什么找不到它。但我不知道如何以一种好的方式解决这个问题。

在Windows窗体中玩按钮

您正在将选项卡Button_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,然后更改其属性。

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

很抱歉浪费了你的时间。