我正在使用WinForms处理Windows应用程序。我有一个标签控件(tabMain),双击标签页标题我需要将其内容移动到一个新窗口并从tabMain中删除标签。
这是我尝试过的代码。
private void tabMain_MouseDoubleClick(object sender, MouseEventArgs e)
{
System.Windows.Controls.TabItem tab = (System.Windows.Controls.TabItem)sender;
var CurrentTab=tabMain.SelectedTab;
if (tabMain.TabPages.Count == 0) return;
tabMain.TabPages.Remove(tabMain.SelectedTab);
System.Windows.Window newWindow=new System.Windows.Window();
newWindow.Content = tab.Content;
newWindow.Show();
}
在执行此操作时,我收到错误“无法将类型为'System.Windows.Forms.TabControl'的对象强制转换为'System.Windows.Controls.TabItem'。”对于该行:
System.Windows.Controls.TabItem tab = (System.Windows.Controls.TabItem)sender;
有没有解决这个问题。还是其他任何可能的出路?
任何帮助将不胜感激
提前致谢
答案 0 :(得分:3)
您的代码有几个问题:
您已将事件处理程序附加到TabControl并将其强制转换为TabItem。因此,您收到此错误。
TabItem和Window是错误的对象。它们都用于WPF应用程序。对于WinForm,您必须使用TabPage和Form
您无法设置Form.Content。你必须单独添加它们。
此示例应该有效:
private void tabMain_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (tabMain.TabPages.Count > 0)
{
TabPage CurrentTab = tabMain.SelectedTab;
tabMain.TabPages.Remove(CurrentTab);
Form newWindow = new Form();
foreach (Control ctrl in CurrentTab.Controls)
{
newWindow.Controls.Add(ctrl);
}
newWindow.Show();
}
}