加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – WPF使用语句打开另一个表单

发布时间:2020-12-15 23:30:13 所属栏目:百科 来源:网络整理
导读:我在 Winforms中编写了一个C#应用程序,现在我在WPF中重写它.在Winforms版本中,我使用以下内容打开另一个窗口,同时向其发送信息并从中接收信息: using (showSelection showSelection1 = new showSelection(listBox2.SelectedItem.ToString())) { showSelecti
我在 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和numOfSeasons:

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()))
            {

            }

但是在using()里面我得到了这个错误:
ShowSelection:using语句中使用的类型必须可以隐式转换为’System.IDisposable’

我不确定从这里做什么.我可以解决这个问题并且仍然以相同的方式解决这个问题,或者我应该采用不同的方式做到这一点吗? ShowSelection窗口只是一个带有单个按钮的数据网格.

解决方法

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

一旦没有对Window的引用,GC将标记为收集,与其他纯.NET组件相同.

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

如果您想手动删除资源(并在使用块中继续使用它),那么最简单的方法是:

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

但除非有需要,否则我建议不要这样做

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读