Visual Studio的MDI目前让我感到非常沮丧.这是我的基本布局:
+--------------+---+
| | |
| 1 | |
| | |
| | 3 |
+--------------+ |
| 2 | |
+--------------+---+
Run Code Online (Sandbox Code Playgroud)
非常标准 - 我在区域1中打开了我的文件,在区域2中有我的错误窗口,在区域3中有我的解决方案资源管理器.
令我沮丧的主要原因是,当我双击打开解决方案资源管理器中的文件时,它通常会在区域1中打开它应该在哪里,但是有时候(看似随机)它会在区域2中打开,这意味着我必须将其拖到区域1以正确查看.或者,更少见的是,它甚至可能在区域1和区域3之间的全新窗格中打开.
此外,如果我关闭所有文件,区域2将展开以占据整个左列,并且新文件将在这个新的组合窗格中打开,这也很烦人.或者,他们可能不会,取决于VS今天的情绪.
我们20号办公室里没有其他人似乎有这个问题,但同样没有人知道如何解决这个问题.所以:
我正在尝试创建一个多布局主屏幕应用程序.我在顶部有一些链接到应用程序主要部分的按钮(例如模型中每个实体的管理窗口)
单击任何这些按钮将在Panel中显示关联的UserControl.Panel持有UserControls,而UserControls又拥有UI.
WinForms UserControl没有Anchor或Dock属性.
我试过设置UserControl的属性
AutoSize=True
Run Code Online (Sandbox Code Playgroud)
和
private void ManageUsersControl_Load(object sender, EventArgs e)
{
this.Width = this.Parent.Width;
this.Height = this.Parent.Height;
}
Run Code Online (Sandbox Code Playgroud)
但这些都行不通.
注意:我在运行时动态加载此控件
我有一个.NET 3.5 MDI WinForms应用程序.
我设置了一个子表单的Icon属性,该图标在表单的左上角正确显示.然后我最大化子表单,图标仍然可以.
随着子窗体仍然最大化,我打开另一个子窗口,自动出现最大化.此表单的图标不是Icon属性中的图标,而是默认的.NET图标(带有蓝色,红色和黄色方块的图标).但是,如果我调整 MDI父窗体的大小,图标将自行重置并正确显示.
有没有人有解决方法或知道为什么会这样?
我添加一个dll引用有一个奇怪的问题.我有一个WPF应用程序,我正在尝试使用WPF MDI库:http://wpfmdi.codeplex.com/
如说明书中所述(非常模糊),我右键单击VS2012中的引用,单击Add reference..,单击Browse..并添加我下载的dll.
接下来,我在窗口的XAML中添加了以下行:xmlns:mdi="clr-namespace:WPF.MDI;assembly=WPF.MDI"如说明中所述.
但是,在尝试<mdi:MdiContainer>在XAML中添加时,会显示以下错误消息:
The type 'mdi:MdiContainer' was not found. Verify that you are not missing an assembly reference and that all referenced assemblies have been built.
The name "MdiContainer" does not exist in the namespace "clr-namespace:WPF.MDI;assembly=WPF.MDI".
这是我的XAML:
<Window x:Class="QueryBuilder.Table"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mdi="clr-namespace:WPF.MDI;assembly=WPF.MDI"
Height="300" Width="300" WindowStyle="ToolWindow" ResizeMode="NoResize" ShowInTaskbar="False">
</Window>
Run Code Online (Sandbox Code Playgroud)
这个问题让我整天感到沮丧.我已经尝试了几乎所有可以想到的东西.值得注意的是,我已经从库的站点下载了示例应用程序,我可以毫无问题地运行它.除此之外,我已将其添加到我的项目的xaml.cs类中:WPF.MDI.MdiContainer d = new WPF.MDI.MdiContainer();它完全没有任何问题.
还请注意,我在这里提出了我最初的问题,并没有提出任何建议.然而,问题现在已经改变了,因为上面的段落似乎表明代码在后面的代码中成功编译,而不是在XAML文件中.
编辑:我还想补充说,我能够浏览汇编参考的代码,如下所示.

我目前有一个使用Delphi 7构建的SDI应用程序,我希望最终用户在运行时选择SDI和MDI之间的接口类型.我的问题是如何在运行时更改SDI和MDI之间的应用程序行为?
目前我知道有几个使用delphi构建的应用程序允许这样:EMS SQL Manager和TOAD.
替代文字http://i46.tinypic.com/5l0ykw.png
提前致谢.
我们遇到了一个奇怪的错误,我们在调试时遇到了问题.
我们有一个使用Microsoft CAB,DevExpress组件和.Net 3.5的MDI工作区.
如果用户在工作区中打开两个窗口,每个窗口包含UserControl绑定到两个单独的数据模型,然后最小化它们,则第一个最小化窗口是在第二个窗口最小化时清除它的绑定字段.
该.Equals和.GetHashCode数据模型的方法已被重写,使两者的数据模型被认为是相等的.如果我们改变它以使它们是唯一的,我们就不会得到这种行为.
这是一些显示问题的示例伪代码
var a = new MyWindow();
a.DataModel = new SomeClass(123);
a.ShowInMdiWorkspace();
var b = new MyWindow();
b.DataModel = new SomeClass(123);
b.ShowInMdiWorksace();
a.Minimize();
// If SomeClass.GetHashCode() is overwritten to consider two objects
// as equal based on the value passed in, then the data bindings for A
// get cleared on this call. If SomeClass.GetHashCode is unique, then
// this problem does not happen.
b.Minimize();
Run Code Online (Sandbox Code Playgroud)
这是第二个窗口最小化时的调用堆栈:

在EndEditSession()堆栈中的呼叫跟踪上面,它被调用 …
我非常喜欢MDI应用程序.
它允许我在窗口之间快速移动并比较不同窗口的内容.此外,有时一个窗口的内容对另一个窗口的内容很有用,所以我可以复制和粘贴.我认为这对于工作模式来说是一种很棒的用户体验.
对错练习,我喜欢它.
我在WPF中看到Stack Overflow问题MDI应用程序,并在那里以Visual Studio 2010环境为例.我不明白是否以及如何实现该环境:比如有可以撕下独立屏幕的标签(对我来说不那么重要),并与其他标签并排重新排列.
我想我正在寻找"WPF中的对接布局系统",谷歌这个提供第三方组件.
我想我会从一个"正常"的应用程序开始.感觉就像这里没有简单的开箱即用的实现.
MDI表单内部是托管mdi子表单的客户端区域.我如何知道该区域有多大?到目前为止,我能想出的最好的方法是找到父级潜在客户区域的总大小(mdiparent.ClientRectangle),然后减去从客户区域带走的工具栏等组件的大小.有没有更好的办法?
前几天,我开始开发我的新项目.应该有一个MDI表格,上面有一些子表格.但是当我开始开发时,我遇到了以下问题:当主窗体变为MDI形式时,它会在内部绘制一个可怕的边框(斜角).我不能把它带走.您可以在屏幕截图中看到这种情况:

相反,MDI-Child表单没有相同的斜角.
该项目包含两种形式,Form1和Form2.Form1是主要的MDI形式.
Form1源代码:
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 346
ClientWidth = 439
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
FormStyle = fsMDIForm
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
end
Run Code Online (Sandbox Code Playgroud)
Form2源代码:
object Form2: TForm2
Left = 0
Top = 0
Caption = 'Form2'
ClientHeight = 202
ClientWidth = 331
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = …Run Code Online (Sandbox Code Playgroud)