如何从其他功能编辑创建的控件?

时间:2013-07-07 12:26:57

标签: c# wpf controls

如果我有以下代码:

Button[] _buttonarray = new Button[40]; // it is outside any function (situated in the public partial class MainWindow : Window)

在一个名为

的函数中创建了一个新按钮
private void createbutton()
{

    _buttonarray[b]=new Button();

    _buttonarray[b].Content = "Content";

    ...
}

如何编辑来自其他功能的_buttonarray[b]内容,例如

private void editbutton()
{
    _buttonarray[b].Content = "New Content";
}

注意:变量b在外面,因此可以从任何函数更改。

2 个答案:

答案 0 :(得分:1)

让它静态:

public static Button[] ButtonArray = new ..

并使用MainWindow.ButtonArray来访问它。

值得指出的是,通过这样做,它在您的MainWindow 的每个实例中都是共享。

修改

只是要指出 - 而不是说“外部”更常见的是使用范围的定义,简单地说 - 如果你可以从某个地方B访问A,那么A在B中范围。

此外 - 请在此处阅读有关静态的更多信息:Static and instance fields

如果要编辑专门创建的按钮,可以将该按钮保留在指定字段中,该字段同时包含创建代码的范围和更改代码的范围:

var myButton = new Button(){Content="Content"};
_buttonarray[b]=myButton;

SomethingInCommon.SpecificButton = myButton;

并在其他地方访问SomethingInCommon

保持SpecificButton值,直到您不再需要它为止。

答案 1 :(得分:0)

您正在使用您拥有的代码编辑一个按钮,它可能不是您期望的那个按钮,因为b的索引可能已被迭代。只需访问正确的索引,可能使用查找和内容谓词来确保您正在编辑右键。