从选项卡控件中删除选项卡页并将页面显示为新的 Window
Remove tab page from a tab control and display the page as a new Window
我正在使用 WinForms 开发 Windows 应用程序。我有一个选项卡控件 (tabMain),双击选项卡页眉我需要将其内容移动到新的 window 并从 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();
}
在执行此操作时,我收到以下行的错误 "Unable to cast object of type 'System.Windows.Forms.TabControl' to type 'System.Windows.Controls.TabItem'.":
System.Windows.Controls.TabItem tab = (System.Windows.Controls.TabItem)sender;
有没有解决这个问题的方法。或者还有其他可能的出路吗?
如有任何帮助,我们将不胜感激
提前致谢
你的代码有几个问题:
您已将事件处理程序附加到 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();
}
}
我正在使用 WinForms 开发 Windows 应用程序。我有一个选项卡控件 (tabMain),双击选项卡页眉我需要将其内容移动到新的 window 并从 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();
}
在执行此操作时,我收到以下行的错误 "Unable to cast object of type 'System.Windows.Forms.TabControl' to type 'System.Windows.Controls.TabItem'.":
System.Windows.Controls.TabItem tab = (System.Windows.Controls.TabItem)sender;
有没有解决这个问题的方法。或者还有其他可能的出路吗?
如有任何帮助,我们将不胜感激
提前致谢
你的代码有几个问题:
您已将事件处理程序附加到 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();
}
}