标签: mdi

Visual Studio 2010恼人地在错误的MDI窗格中打开文档

Visual Studio的MDI目前让我感到非常沮丧.这是我的基本布局:

+--------------+---+
|              |   |
|      1       |   |
|              |   |
|              | 3 |
+--------------+   |
|      2       |   |
+--------------+---+
Run Code Online (Sandbox Code Playgroud)

非常标准 - 我在区域1中打开了我的文件,在区域2中有我的错误窗口,在区域3中有我的解决方案资源管理器.

令我沮丧的主要原因是,当我双击打开解决方案资源管理器中的文件时,它通常会在区域1中打开它应该在哪里,但是有时候(看似随机)它会在区域2中打开,这意味着我必须将其拖到区域1以正确查看.或者,更少见的是,它甚至可能在区域1和区域3之间的全新窗格中打开.

此外,如果我关闭所有文件,区域2将展开以占据整个左列,并且新文件将在这个新的组合窗格中打开,这也很烦人.或者,他们可能不会,取决于VS今天的情绪.

我们20号办公室里没有其他人似乎有这个问题,但同样没有人知道如何解决这个问题.所以:

  1. 我想这样做,所以我打开的文件总是打开到区域1.
  2. 我想知道是否有可能"锁定"我的布局(例如,我可以使用Windows任务栏),以阻止我意外移动或调整窗格大小.

mdi visual-studio-2010

96
推荐指数
3
解决办法
2万
查看次数

如何使WinForms UserControl填充其容器的大小

我正在尝试创建一个多布局主屏幕应用程序.我在顶部有一些链接到应用程序主要部分的按钮(例如模型中每个实体的管理窗口)

单击任何这些按钮将在Panel中显示关联的UserControl.Panel持有UserControls,而UserControls又拥有UI.

WinForms UserControl没有AnchorDock属性.

我试过设置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 c# mdi multipage winforms

43
推荐指数
1
解决办法
8万
查看次数

在.NET中创建新的最大化MDI子窗体的图标问题

我有一个.NET 3.5 MDI WinForms应用程序.

我设置了一个子表单的Icon属性,该图标在表单的左上角正确显示.然后我最大化子表单,图标仍然可以.

随着子窗体仍然最大化,我打开另一个子窗口,自动出现最大化.此表单的图标不是Icon属性中的图标,而是默认的.NET图标(带有蓝色,红色和黄色方块的图标).但是,如果我调整 MDI父窗体的大小,图标将自行重置并正确显示.

有没有人有解决方法或知道为什么会这样?

.net icons mdi winforms

15
推荐指数
2
解决办法
1万
查看次数

在XAML中找不到程序集引用,但在xaml.cs类中引用时代码编译

我添加一个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文件中.

编辑:我还想补充说,我能够浏览汇编参考的代码,如下所示.

在此输入图像描述

.net c# wpf xaml mdi

15
推荐指数
2
解决办法
2万
查看次数

切换SDI和MDI之间的GUI应用程序行为

我目前有一个使用Delphi 7构建的SDI应用程序,我希望最终用户在运行时选择SDI和MDI之间的接口类型.我的问题是如何在运行时更改SDI和MDI之间的应用程序行为?

目前我知道有几个使用delphi构建的应用程序允许这样:EMS SQL ManagerTOAD.

替代文字http://i46.tinypic.com/5l0ykw.png

提前致谢.

delphi mdi sdi

14
推荐指数
1
解决办法
3742
查看次数

为什么会覆盖.GetHashCode在WinForms中清除这些数据绑定值?

我们遇到了一个奇怪的错误,我们在调试时遇到了问题.

我们有一个使用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()堆栈中的呼叫跟踪上面,它被调用 …

c# mdi devexpress .net-3.5 winforms

14
推荐指数
1
解决办法
576
查看次数

如何在WPF应用程序中实现mdi

我非常喜欢MDI应用程序.

它允许我在窗口之间快速移动并比较不同窗口的内容.此外,有时一个窗口的内容对另一个窗口的内容很有用,所以我可以复制和粘贴.我认为这对于工作模式来说是一种很棒的用户体验.

对错练习,我喜欢它.

在WPF中看到Stack Overflow问题MDI应用程序,并在那里以Visual Studio 2010环境为例.我不明白是否以及如何实现该环境:比如有可以撕下独立屏幕的标签(对我来说不那么重要),并与其他标签并排重新排列.

我想我正在寻找"WPF中的对接布局系统",谷歌这个提供第三方组件.

我想我会从一个"正常"的应用程序开始.感觉就像这里没有简单的开箱即用的实现.

wpf mdi

13
推荐指数
3
解决办法
3万
查看次数

防止重复的MDI子表单

有没有办法阻止在MDI容器中打开某个表单,如果该表单已经打开?

c# mdi children

12
推荐指数
1
解决办法
2万
查看次数

Winforms MDI客户区的大小/位置

MDI表单内部是托管mdi子表单的客户端区域.我如何知道该区域有多大?到目前为止,我能想出的最好的方法是找到父级潜在客户区域的总大小(mdiparent.ClientRectangle),然后减去从客户区域带走的工具栏等组件的大小.有没有更好的办法?

mdi mdiparent mdichild winforms

11
推荐指数
1
解决办法
9615
查看次数

如何删除MDI客户端窗口的凹陷内边缘?

前几天,我开始开发我的新项目.应该有一个MDI表格,上面有一些子表格.但是当我开始开发时,我遇到了以下问题:当主窗体变为MDI形式时,它会在内部绘制一个可怕的边框(斜角).我不能把它带走.您可以在屏幕截图中看到这种情况:

http://s18.postimg.org/k3hqpdocp/mdi_problem.png

相反,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)

delphi mdi delphi-xe3

11
推荐指数
1
解决办法
2161
查看次数