在C语言中,对于我正在编写的一个相对简单的程序,我试图创建一个处理多个源的事件处理函数,如下所示:

private void fooHandler(object sender, RoutedEventArgs e)
{
    fooObject objectFoo = (fooObject)sender;
    if (objectFoo.name == "bla1"){
        bla1Window bla = new bla1Window();
    }
    if (objectFoo.name == "bla2"){
        bla2Window bla = new bla2Window();
    }
    .
    .
    .
    else{
        //default stuff happens
    }
bla.Left = this.Left
bla.Top = this.Top
bla.Show();
this.Close();
}

该功能用于窗口切换。
问题是,一旦退出if语句,变量就落空了。我这样做是因为,看看我定义的一系列单独处理每个事件的函数,它们都是一样的,除了一个变量声明。有没有办法让它工作,或者我只需要为每个事件处理程序使用一个函数?

最佳答案

如果bla1Windowbla2Window都共享一个基类或接口,则可以这样引用它们。在本例中,您似乎只是在访问Window的属性,因此可以执行以下操作:

Window window = null;
fooObject objectFoo = (fooObject)sender;
if (objectFoo.name == "bla1"){
    window = new bla1Window();
}
else if (objectFoo.name == "bla2"){
    window = new bla2Window();
}
.
.
.
else{
    //default stuff happens
}

window.Left = this.Left
window.Top = this.Top
window.Show();
this.Close();

07-25 20:38