【问题标题】:Playing around with buttons in Windows Forms在 Windows 窗体中使用按钮
【发布时间】:2013-07-02 02:10:48
【问题描述】:

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

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

【问题讨论】:

    标签: c# windows forms button unreachable-code


    【解决方案1】:

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

    【讨论】:

    • 问题是因为它是在代码开头分配的,所以找到了 tab_1。 tabButton 找不到,因为它是在我按 ctrl + T 时分配的。但我需要找到解决方法。
    • 不,抱歉。我几乎重新开始并以更简单的方式解决了它。我不必创建这样的按钮。但是感谢您的回复:)
    【解决方案2】:

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

    很抱歉浪费了您的时间。

    【讨论】:

      猜你喜欢
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 2012-05-13
      相关资源
      最近更新 更多