Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#全局组件代码_C#_.net - Fatal编程技术网

C#全局组件代码

C#全局组件代码,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

我是C#的新手,我一直在胡乱探索这门语言,到目前为止,我在探索中写了很多程序,但现在我被一件事困住了,我无法用语言解释,但代码可以说出我想要的,所以我们开始吧,我知道这是一个愚蠢的程序,但它只是为了教育目的:D

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(控制