如何更改 TableLayoutPanel 中按钮的 BackColor?
How to change the BackColor of Buttons inside a TableLayoutPanel?
有什么方法可以改变 TableLayoutPanel 中按钮的背景颜色吗?
单击 TableLayoutPanel 外部的按钮将更改按钮的背景颜色。
其实我想知道如何识别 TableLayoutPanel 中的按钮。
我在下面提供了一个代码块。请指正。
private void button10_Click(object sender, EventArgs e)
{
Button btnClicked = sender as Button;
// wanted to convert the controls of tablelayoutpanel
if (tableLayoutPanel1.Controls is Button)
{
btnClicked = (Button)tableLayoutPanel1.Controls;
}
else
continue;
}
// Couldn't call the buttons inside the tablelayoutpanel.
Control.Controls是一个集合。它不能投射到单个对象。这个:
tableLayoutPanel1.Controls is Button
将在代码编辑器(绿色下划线)中收到消息通知:
The given expression is never of the provided ('Button') type.
此转换将生成错误:
btnClicked = (Button)tableLayoutPanel1.Controls;
CS0030: Cannot convert type
'System.Windows.Forms.TableLayoutControlCollection' to
'System.Windows.Forms.Button'
要修改 TableLayoutPanel(或任何其他容器)的所有 Button 子控件的 属性,您可以枚举其 Controls 集合,仅考虑特定类型的子控件。
例如,更改为 Color.Red
TableLayoutPanel 内所有按钮的 BackColor
属性:
foreach (Button button in tableLayoutPanel1.Controls.OfType<Button>()) {
button.BackColor = Color.Red;
}
将第一行所有按钮的Text
改为属性:
请注意,在这里,我使用的是通用 Control
类型,而不是 Button
。这是因为 Text
属性 对于派生自 Control 的所有控件都是通用的。 Text
属性定义在Control
class中。
foreach (Control ctl in tableLayoutPanel1.Controls.OfType<Button>())
{
if (tlp1.GetRow(ctl) == 0)
ctl.Text = "New Text";
}
修改TableLayoutPanel第一行第一列的控件属性:
在这里,我不知道位于坐标 (0, 0)
处的是什么样的控件,但我知道它是从控件 class 派生的对象。所以我可以设置一个 属性 属于这个 class 并且因此被继承。
特定的 属性 可能与控件类型无关。在这种情况下什么也不会发生(您可以尝试设置 TableLayoutPanel 的 Text 属性)。
(tableLayoutPanel1.GetControlFromPosition(0, 0) as Control).BackColor = Color.Green;
有什么方法可以改变 TableLayoutPanel 中按钮的背景颜色吗?
单击 TableLayoutPanel 外部的按钮将更改按钮的背景颜色。
其实我想知道如何识别 TableLayoutPanel 中的按钮。
我在下面提供了一个代码块。请指正。
private void button10_Click(object sender, EventArgs e)
{
Button btnClicked = sender as Button;
// wanted to convert the controls of tablelayoutpanel
if (tableLayoutPanel1.Controls is Button)
{
btnClicked = (Button)tableLayoutPanel1.Controls;
}
else
continue;
}
// Couldn't call the buttons inside the tablelayoutpanel.
Control.Controls是一个集合。它不能投射到单个对象。这个:
tableLayoutPanel1.Controls is Button
将在代码编辑器(绿色下划线)中收到消息通知:
The given expression is never of the provided ('Button') type.
此转换将生成错误:
btnClicked = (Button)tableLayoutPanel1.Controls;
CS0030: Cannot convert type 'System.Windows.Forms.TableLayoutControlCollection' to 'System.Windows.Forms.Button'
要修改 TableLayoutPanel(或任何其他容器)的所有 Button 子控件的 属性,您可以枚举其 Controls 集合,仅考虑特定类型的子控件。
例如,更改为 Color.Red
TableLayoutPanel 内所有按钮的 BackColor
属性:
foreach (Button button in tableLayoutPanel1.Controls.OfType<Button>()) {
button.BackColor = Color.Red;
}
将第一行所有按钮的Text
改为属性:
请注意,在这里,我使用的是通用 Control
类型,而不是 Button
。这是因为 Text
属性 对于派生自 Control 的所有控件都是通用的。 Text
属性定义在Control
class中。
foreach (Control ctl in tableLayoutPanel1.Controls.OfType<Button>())
{
if (tlp1.GetRow(ctl) == 0)
ctl.Text = "New Text";
}
修改TableLayoutPanel第一行第一列的控件属性:
在这里,我不知道位于坐标 (0, 0)
处的是什么样的控件,但我知道它是从控件 class 派生的对象。所以我可以设置一个 属性 属于这个 class 并且因此被继承。
特定的 属性 可能与控件类型无关。在这种情况下什么也不会发生(您可以尝试设置 TableLayoutPanel 的 Text 属性)。
(tableLayoutPanel1.GetControlFromPosition(0, 0) as Control).BackColor = Color.Green;