c# - 如何使用.NET 创建选项卡式窗口?

标签 c# .net

选项卡式窗口允许用户拖放选项卡项目以重新排列其顺序,或将它们移出选项卡栏以将其转变为独立窗口。它们目前很常见。我使用的许多应用程序都有它们(例如 IE、Firefox、Chrome、VS、Android Studio 等)

我正在寻找可以帮助创建选项卡式窗口的 .NET 框架或控件库。我尝试过在 stackoverflow 和 Google 上进行一些搜索,但有关它的主题很少。其中之一让我想到了这一点

http://fabtab.codeplex.com/

.NET API 中没有任何东西可以帮助我解决这个问题,所以我必须从头开始创建它或使用第三方库吗?

各位,请给我一些建议或分享一下您的经验。我可以使用 .NET WinForm 或 WPF,但如果它是其他框架,我将准备采用它。

最佳答案

在Windows应用程序中,您可以制作两种类型的应用程序

  1. 多形式申请
  2. 单一表单申请

在多表单应用程序中,您有一个包含子表单的主表单,您可以使用 tabstrip 控件将它们显示为停靠选项卡。

// to add a form in the MdiParent form
     var form = new ChildForm();
    form.MdiParent = this;
    form.Show();

在单一表单应用程序中,表单被创建但不附加到主表单

 // to add a form in single form application
    var form = new AnotherForm();
    form.Show(); //  form.ShowDialog() should not be used because it will be modal form

为了实现你想要的,你需要处理 tabstrip 和 mainform 的拖放事件

如果您从主窗体外部拖放一个窗体并将其放入内部,则可以通过使 form.MdiParent = this; 轻松将此窗体附加到主窗体;//这是主窗体

如果您将表单从选项卡条拖到主表单之外,则会将该表单与主表单分离

from.MdiParent = null;

希望这对你有帮助

关于c# - 如何使用.NET 创建选项卡式窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31363652/

相关文章:

c# - Linq 查询中的表达式

c# - 我是否正确理解了这个 MSIL 代码?

c# - 如何获取两个平面网格的公共(public)部分?

c# - 如何在 .NET ConcurrentDictionary 中实现 remove_if 功能

c# - 在 Visual Studio Code 中找不到 Xunit 命名空间

c# - 每次在 property getter 中返回新的 ICommand 不好吗?

c# - 使用 .NET 3.5 时如何删除 LinkLabel 作为制表位?

c# - 如何在 .NET 中导入使用 sn.exe 生成的 .snk 文件?

.net - 标准 ASP.NET header 从哪里出现?

c# - 另一个域上的 ASP.NET 应用程序可以与另一个域上的 Mysql 数据库集成吗