C# 使用一个空隙更容易打开窗户

C# 使用一个空隙更容易打开窗户,c#,wpf,C#,Wpf,我有一个我正在尝试开发的软件启动器。现在,设置有一个“持久窗口”,这样启动器在选择一个按钮后是否保持打开状态 现在我想在同一个类中使用on private void简化窗口生成过程。但我不知道我该如何给这个空间一个所需的窗口 这是项目结构: 我已经尝试过几种类型的参数,比如“字符串、窗口或类型”,但每次我都会得到“xxx是一个变量,但它被用作类型” 这是调用未来窗口的按钮代码 private void Btn_NewAdress_Click(object sender, Rou

我有一个我正在尝试开发的软件启动器。现在,设置有一个“持久窗口”,这样启动器在选择一个按钮后是否保持打开状态

现在我想在同一个类中使用on private void简化窗口生成过程。但我不知道我该如何给这个空间一个所需的窗口

这是项目结构:

我已经尝试过几种类型的参数,比如“字符串、窗口或类型”,但每次我都会得到“xxx是一个变量,但它被用作类型”

这是调用未来窗口的按钮代码

        private void Btn_NewAdress_Click(object sender, RoutedEventArgs e)
        {
             fun_openWindow(Adress.frm_Adress,"new");
        }
这就是我创造的新空间:

        private void fun_openWindow(Window selectedWindow, string type)
        {
            selectedWindow form = new selectedWindow();
            form.Show();

            switch (type)
            {
                case "search":
                    form.ti_search.IsSelected = true;
                    break;
                default:
                    form.ti_new.IsSelected = true;
                    break;
            }

            if (Properties.Settings.Default.persistentWindow == true)
            {
                this.Close();
            }
        }
我希望写入参数的窗口将打开,如果设置了设置,则启动器应关闭或不关闭。

错误

selectedWindow是一个变量,但用作类型

是正确的,因为您确实将变量
selectedWindow
用作类型

错误可能发生在以下代码行中:

selectedWindow form = new selectedWindow();
在赋值的左侧,编译器需要一个类型,然后是一个变量名。 在本例中,您指定了一个变量名(
selectedWindow
),然后是另一个变量名(
form
)。 此外,在赋值的右侧,编译器需要关键字
new
和类型(例如窗口的类型),但您指定了变量名(
selectedWindow
),而不是有效的类型。 正确的语法是:

Window form = new YourWindowClass();
对于您的实现,
YourWindowClass
frm\u地址
frm\u启动器
,具体取决于显示的窗口。

错误

selectedWindow是一个变量,但用作类型

是正确的,因为您确实将变量
selectedWindow
用作类型

错误可能发生在以下代码行中:

selectedWindow form = new selectedWindow();
在赋值的左侧,编译器需要一个类型,然后是一个变量名。 在本例中,您指定了一个变量名(
selectedWindow
),然后是另一个变量名(
form
)。 此外,在赋值的右侧,编译器需要关键字
new
和类型(例如窗口的类型),但您指定了变量名(
selectedWindow
),而不是有效的类型。 正确的语法是:

Window form = new YourWindowClass();

对于您的实现,
YourWindowClass
frm\u地址
frm\u启动器
,具体取决于所显示的窗口。

您可以使用泛型:

private void Btn_NewAdress_Click(object sender, RoutedEventArgs e)
{
    fun_openWindow<Adress.frm_Adress>("new");
}
private void fun_openWindow<YourWindow>(string type) where YourWindow: Window, new()
{
    YourWindow form = new YourWindow();
    form.Show();
}

您可以使用泛型:

private void Btn_NewAdress_Click(object sender, RoutedEventArgs e)
{
    fun_openWindow<Adress.frm_Adress>("new");
}
private void fun_openWindow<YourWindow>(string type) where YourWindow: Window, new()
{
    YourWindow form = new YourWindow();
    form.Show();
}

什么是地址?什么是地址?(请阅读)frm地址是一个窗口(WPF),带有“公共部分类frm地址:窗口”和publig initializecomponent()什么是
frm地址
?什么是地址?(请阅读)frm地址是一个窗口(WPF),带有“公共部分类frm_地址:窗口”和publig初始化组件()谢谢您的回答。但是在创建表单(
form.show()
)之后,是否有方法访问新表单的formelements?这样上面的开关箱就可以工作了?现在我得到了“
窗口不包含定义“ti_search”
,它位于开关盒中,您可以尝试使用
((CustomWindowTypeWithProperties)表单).ti_search.IsSelected=true;
开关
语句中,将您的对象转换为确定类型。抱歉,我不知怎么搞不懂,即使您描述得那么好。
CustomWindowTypeWithProperties
它到底需要写什么?一个类/类型,它包含
ti_search
。但是
adres.frm\Adress
包含ti_search,或我尝试使用此函数打开的其他表单,因此与第一个属性中的内容类似。然后它是一个变量,用作类型。感谢您的回答。但是在创建表单(
form.show()
)之后有没有办法访问新表单的formelements?这样上面的切换框就可以工作了?现在我得到了“
窗口不包含“ti_search”
的定义,在切换框中,您可以尝试使用
((CustomWindowTypeWithProperties)表单)。ti_search.IsSelected=true
switch
语句中,将对象强制转换为确定类型。对不起,我不知怎么搞不懂,即使你描述得那么好
CustomWindowTypeWithProperties
它到底需要写什么?一个类/类型,它包含
ti_search
。但是
Address.frm_Address
包含ti_search,或者我试图用这个函数打开的其他表单,就像第一个属性中的内容一样。然后它是一个变量,就像一个类型一样使用。