C# WPF在不同的环境中有不同的行为?
两台机器:C# WPF在不同的环境中有不同的行为?,c#,wpf,C#,Wpf,两台机器: 计算机1:已安装Windows 7 32位.net4.0 计算机2:已安装Windows 8 64位.net4.0/4.5 上述代码总是在机器1上崩溃,例外情况是“指定的元素已经是另一个元素的逻辑子元素,请先断开它 但是,它在机器2上工作。(lvi2的内容实际上是空的) 有人能详细解释一下为什么会这样吗?(注:测试应用程序是用VS2010、.net 4.0构建的) 添加:以下代码具有相同问题(在机器2上工作,而不是在机器1上工作) 不应将同一控件指定为两个不同控件的子控件/内容 至于
计算机1:已安装Windows 7 32位.net4.0
计算机2:已安装Windows 8 64位.net4.0/4.5 上述代码总是在机器1上崩溃,例外情况是“指定的元素已经是另一个元素的逻辑子元素,请先断开它 但是,它在机器2上工作。(lvi2的内容实际上是空的) 有人能详细解释一下为什么会这样吗?(注:测试应用程序是用VS2010、.net 4.0构建的) 添加:以下代码具有相同问题(在机器2上工作,而不是在机器1上工作)
不应将同一控件指定为两个不同控件的子控件/内容
至于你的问题,在这种情况下,.NET framework 4.5可能会有所改变,从而放松或修改了行为。即使你的应用程序以4.0为目标,它仍然在.NET 4.5运行时执行。换句话说,.NET 4.5取代了.NET 4.0,而不是并排工作。我自己也有过这样的经历,似乎4.5很乐意移动insta将myRTB复制到可视化树中的一个新位置,在该位置4.0刚刚崩溃,无论哪种方式,代码都不能像您预期的那样工作,您都无法获得myRTB的2个可视化。没有.NET 4.5运行时。它是.NET 4运行时,上面有一系列框架更改。
private void Window_Loaded(object sender, RoutedEventArgs e)
{
try
{
RichTextBox myRTB = new RichTextBox();
ListViewItem lvi1 = new ListViewItem();
ListViewItem lvi2 = new ListViewItem();
lvi1.Content = myRTB;
lvi2.Content = myRTB;
this.lstView1.Items.Add(lvi1);
this.lstView2.Items.Add(lvi2);
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
try
{
RichTextBox myRTB = new RichTextBox();
ListViewItem lvi1 = new ListViewItem();
lvi1.Content = myRTB;
this.lstView1.Items.Add(lvi1);
this.lstView1.Items.Remove(lvi1);
ListViewItem lvi2 = new ListViewItem();
lvi2.Content = myRTB;
this.lstView2.Items.Add(lvi2);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}