C#全局组件代码
我是C#的新手,我一直在胡乱探索这门语言,到目前为止,我在探索中写了很多程序,但现在我被一件事困住了,我无法用语言解释,但代码可以说出我想要的,所以我们开始吧,我知道这是一个愚蠢的程序,但它只是为了教育目的:DC#全局组件代码,c#,.net,C#,.net,我是C#的新手,我一直在胡乱探索这门语言,到目前为止,我在探索中写了很多程序,但现在我被一件事困住了,我无法用语言解释,但代码可以说出我想要的,所以我们开始吧,我知道这是一个愚蠢的程序,但它只是为了教育目的:D Private void change() { anycontrol.BackColor = Color.Gold; // when this function called the control's BackColor will Change to gold
Private void change()
{
anycontrol.BackColor = Color.Gold; // when this function called the control's BackColor will Change to gold
}
// example
private void TextBox1_Focused(object sender, EventArgs e)
{
Change(); // this suppose to change the color of the controls which is now textbox1 i want it to work on other controls such as buttons progressbars etc
}
现在,在我解释了我的问题之后,我可能会问您是否可以帮忙,我们将不胜感激。您可以创建一个将a和a作为参数的方法,并且从
控件继承的任何内容(即文本框
,下拉列表
,标签
等)都可以使用:
void SetControlBackgroundColour(Control control, Color colour)
{
if (control != null)
{
control.BackColor = colour;
}
}
在您的示例中,您可以这样使用它:
private void TextBox1_Focused(object sender, EventArgs e)
{
SetControlBackgroundColour(sender as Control, Color.Gold);
}
为了响应注释,您可以在递归方法中使用此方法,该方法将为窗体上的每个控件设置背景色:
void SetControlBackgroundColourRecursive(Control parentControl, Color colour)
{
if (parentControl != null)
{
foreach (Control childControl in parentControl.Controls)
{
SetControlBackgroundColour(childControl, colour);
SetControlBackgroundColourRecursive(childControl);
}
}
}
然后在Form1\u Load
方法中的Form
对象(this
)上调用此函数(假设表单名为Form1
):
您可以创建一个将a和a作为参数的方法,并且从控件继承的任何内容(即文本框
,下拉列表
,标签
等)都将使用此方法:
void SetControlBackgroundColour(Control control, Color colour)
{
if (control != null)
{
control.BackColor = colour;
}
}
在您的示例中,您可以这样使用它:
private void TextBox1_Focused(object sender, EventArgs e)
{
SetControlBackgroundColour(sender as Control, Color.Gold);
}
为了响应注释,您可以在递归方法中使用此方法,该方法将为窗体上的每个控件设置背景色:
void SetControlBackgroundColourRecursive(Control parentControl, Color colour)
{
if (parentControl != null)
{
foreach (Control childControl in parentControl.Controls)
{
SetControlBackgroundColour(childControl, colour);
SetControlBackgroundColourRecursive(childControl);
}
}
}
然后在Form1\u Load
方法中的Form
对象(this
)上调用此函数(假设表单名为Form1
):
不是最好的解释。。。你有什么问题?您确定调用了正确的方法吗<代码>更改
!=<代码>更改
。C#区分大小写我编辑了这个问题,是的,我调用了正确的函数。把你真正的代码放进去,因为这不起作用,认真地说,然后试着调试,看看是否有异常,看看是否引发了异常等。我想要一个命令而不是“anycontroll”这将适用于所有控件,而不是键入这些名称。例如,如果我想更改textbox的背景颜色,我将键入textbox1.BackColor=color.gold;如果我可以用一个命令替换控件名,该命令将在其他控件上工作,那么我尝试了以下方法:BackColor=color.gold;它只会改变表单的背景色,尽管我不确定您对编程有多陌生,但关注一些编程语言构造,例如将参数传递给方法和利用继承层次结构,肯定会帮助您解决这个特定问题。另外,您没有提到您是否正在使用WPF/Web Forms/Win Forms,因为您在评论中询问有关命令的信息。这不是最好的解释。。。你有什么问题?您确定调用了正确的方法吗<代码>更改!=<代码>更改。C#区分大小写我编辑了这个问题,是的,我调用了正确的函数。把你真正的代码放进去,因为这不起作用,认真地说,然后试着调试,看看是否有异常,看看是否引发了异常等。我想要一个命令而不是“anycontroll”这将适用于所有控件,而不是键入这些名称。例如,如果我想更改textbox的背景颜色,我将键入textbox1.BackColor=color.gold;如果我可以用一个命令替换控件名,该命令将在其他控件上工作,那么我尝试了以下方法:BackColor=color.gold;它只会改变表单的背景色,尽管我不确定您对编程有多陌生,但关注一些编程语言构造,例如将参数传递给方法和利用继承层次结构,肯定会帮助您解决这个特定问题。另外,您没有提到是否使用WPF/Web Forms/Win Forms,因为您在评论中询问了有关命令的信息。您的代码帮助我仍然需要键入控件的名称,是否有任何方法可以获取控件名称并将其传递给ChangeBackgroundColor(此处为Color.Gold);我没有输入控件名,而是输入了使用sender
参数所需的代码。请注意,as
可以产生null
,因此在ChangeBGColour
@weston中为这种情况添加了保护对不起,我确实重新加载了编辑,但我一定错过了什么,我想我没有在任何地方使用as
不,我做了,它在编辑中丢失了。但不管怎样,我现在已经修复了它。查看sender as Control
,保存操作输入TextBox1
,然后可以重用事件方法。如果您不介意的话,您的代码确实帮助了我,我已经将其编辑成这样:System.Drawing.Color=new System.Drawing.Color();void changebackgroundcolor(控件控件,颜色){if(控件!=null){Control.BackColor=Color=Color.Gold;;}}私有void文本框1_聚焦(对象发送方,事件参数e){changebackgroundcolor(发送方作为控件,颜色);}您的代码帮助了我,我仍然需要键入控件的名称,是否有任何方法可以获取控件名称并将其传递给ChangeBackgroundColor(这里是Color.Gold);我没有输入控件名,而是输入了使用sender
参数所需的代码。请注意,as
可以产生null
,因此在ChangeBGColour
@weston中为这种情况添加了保护对不起,我确实重新加载了编辑,但我一定错过了什么,我想我没有在任何地方使用as
不,我做了,它在编辑中丢失了。但不管怎样,我现在已经修复了它。查看sender as Control
,保存操作输入TextBox1
,然后可以重用事件方法。如果您不介意的话,您的代码确实帮助了我,我已经将其编辑成这样:System.Drawing.Color=new System.Drawing.Color();void changebackgroundcolor(控制,颜色){if(控制