C# WPF使用语句打开另一个窗体

C# WPF使用语句打开另一个窗体,c#,wpf,winforms,C#,Wpf,Winforms,我在Winforms中编写了一个C#应用程序,现在正在WPF中重写它。在Winforms版本中,我使用以下命令打开另一个窗口,同时向其发送信息并从中接收信息: using (showSelection showSelection1 = new showSelection(listBox2.SelectedItem.ToString())) { showSelection1.ShowDialog();

我在Winforms中编写了一个C#应用程序,现在正在WPF中重写它。在Winforms版本中,我使用以下命令打开另一个窗口,同时向其发送信息并从中接收信息:

using (showSelection showSelection1 = new showSelection(listBox2.SelectedItem.ToString()))
            {
                showSelection1.ShowDialog();               
                storage1.showID = showSelection1.showID;
                storage1.numOfSeasons = showSelection1.numOfSeasons;

            }
这很好,我从
listBox2
发送所选项目,并在showSelection表单中使用此代码接收
showID
numfoseasures

this.showID = Convert.ToInt32(dataGridView1[2, dataGridView1.CurrentCell.RowIndex].Value);
this.numOfSeasons = dataGridView1[1, dataGridView1.CurrentCell.RowIndex].Value.ToString();
this.Close();
现在,在WPF版本中,我尝试了同样的方法:

using (ShowSelection showSelection = new ShowSelection(showListBox.SelectedItem.ToString()))
            {

            }
但是在使用()的
中,我得到了以下错误:
ShowSelection:using语句中使用的类型必须隐式转换为“System.IDisposable”


我真的不知道从这里该怎么办。我可以用同样的方法来解决这个问题吗?或者我应该用不同的方法来解决这个问题吗?ShowSelection窗口只是一个带有单个按钮的数据网格。

WPF组件不使用Win32句柄(
window
使用,但它自己管理),因此它们不需要是
IDisposable
,您也不需要
处理它们或使用
块在
中使用它们

一旦不再有对
窗口的引用,它将被GC标记为收集,与其他纯网络组件一样

如果您想在
using
块中使用它,您可以在窗口上手动实现
IDisposable
,但实际上并不需要它

如果您想手动删除资源(并在
使用
块中继续使用),则可以执行以下最简单的操作:

public class ShowSelection : Window, IDisposable
{
    public void Dispose()
    {
      /* here you'd remove any references you don't need */
    }
}

但除非有必要,否则我建议不要这样做,因为它只是说ShowSelection类不是从IDisposable派生的 因此,使用它时不要使用:

ShowSelection ShowSelection=newshowselection(showListBox.SelectedItem.ToString())

然后访问所需的属性,以便:
showSelection.#####

您的showSelection窗口未实现IDisable,请在窗口代码中实现IDisposable。请参阅不要像编写winforms那样编写wpf。。。你会错过所有好东西的。谢谢!我想我应该研究如何从窗口取回数据。@Jrow应该完全相同,您只是不使用
using
块,而是使用
ShowSelection ShowSelection=newshowselection(showListBox.SelectedItem.ToString())
。但是,如果使用WPF,我会研究MVVM模式,并使用ViewModel将数据绑定到(但这远远超出了这个问题的范围)