在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。我理解为什么找不到它。但我不知道如何以一种好的方式解决这个问题。
您正在将选项卡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,然后更改其属性。
我将使用不同的方法。创建最初需要的所有按钮。
很抱歉浪费了你的时间。