我目前正在开发一个程序,该程序使用相当复杂的嵌套winform控件结构,当用户进行某些选择时,这些控件会动态更改.有关控件的具体布局的详细信息,请参阅此问题.
在进行选择时,会对由用户控件控制的基础模型进行大量更新.然后,这导致所显示的控件的大小/位置/可见性的一系列相应变化.所有这些变化都会导致屏幕上控件的剧烈闪烁.我需要以某种方式修复此问题,以便每次用户进行选择时,屏幕基本上都会冻结,直到所有控件更新完成.
我试图在许多不同的地方和方式使用Control.SuspendLayout/Control.ResumeLayout方法,我无法消除疯狂的闪烁.我认为在更改期间暂停根控件上的布局会解决问题,但是当更改子控件时,看起来这个SuspendLayout没有帮助.
我是否需要使用其他方法而不是SuspendLayout?有没有办法我可以调试SuspendLayout,看看为什么它似乎没有级联到所有的子控件?
我正在尝试为特定的工程应用程序设计一个类库,我正在努力确保我的类和命名空间命名约定有意义.
我有以下情况:
namespace Vehicle{
class Wheel{...} //base class for Wheel objects
class Engine{...} //base class for Engine objects
...
namespace Truck{
class Wheel: Vehicle.Wheel{...} //Truck specific Wheel object
class Engine: Vehicle.Engine{...} //Truck specific Engine object
...
}
namespace Car{
class Wheel: Vehicle.Wheel{...} //Car specific Wheel object
class Engine: Vehicle.Engine{...} //Car specific Engine object
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
代码的使用方式是需要在同一范围内引用所有这些类.可能存在以下情况:
...
Vehicle.Wheel.DoSomething();
Vehicle.Truck.Wheel.DoSomething();
Vehicle.Car.Wheel.DoSomething();
...
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我最好给这些课程更具体的名字
namespace Car{
class CarWheel: Vehicle.Wheel{...} //Car specific Wheel object
...
}
Run Code Online (Sandbox Code Playgroud)
或保留第一个示例中所示的命名,并依赖于命名空间中编码的信息以便清楚起见?在后一种方法下,我假设我想在使用这个库的代码中明确地使用alaising,对吗?
拥有以下内容似乎更令人不满:
Vehicle.Car.CarWheel
Run Code Online (Sandbox Code Playgroud)
要么
Vehicle.Truck.TruckEngine …Run Code Online (Sandbox Code Playgroud) 我有一个复杂的Windows窗体GUI程序,它有很多自动控件生成和操作.我需要做的一件事是将自定义UserControl添加到新实例化的TabPage.但是,当我的代码执行此操作时,我会自动调整大小导致格式化变得丑陋的事件.如果没有详细说明可能涉及的所有不同容器,基本问题是:
在代码中的某一点,我创建了一个新的标签页:
TabPage tempTabPage = new TabPage("A New Tab Page");
Run Code Online (Sandbox Code Playgroud)
然后我将它设置为我希望它维护的特定大小:
tempTabPage.Width = 1008;
tempTabPage.Height = 621;
Run Code Online (Sandbox Code Playgroud)
然后我将它添加到TabControl:
tabControl.TabPages.Add(tempTabPage);
Run Code Online (Sandbox Code Playgroud)
然后我创建一个用户控件,我想在新添加的TabPage中显示:
CustomView customView = new CustomView("A new custom control");
Run Code Online (Sandbox Code Playgroud)
这就是问题所在.此时tempTabPage和customView的大小相同,没有填充或边距,它们是我希望它们的大小.我现在尝试将这个新的自定义UserControl添加到标签页,如下所示:
tempTabPage.Controls.Add(customView);
Run Code Online (Sandbox Code Playgroud)
在进行此调用时,customView及其子控件的大小调整为更大,因此隐藏了部分customView.
任何人都可以给我任何关于寻找什么或可能导致这类问题的方向吗?
提前谢谢.
我正在编写一个加载页面的Web应用程序,然后使用javascript显示使用Facebook的XFBML代码的Facebook评论框.我在一个容器中有Facebook注释iframe,在页面加载时设置为"display:none".稍后当用户点击按钮时,将显示容器.
我遇到的问题是,当页面加载Facebook Comments容器设置为"display:none"时,Facebook加载的iframe的高度远远大于预期的高度.但是,如果我加载页面并将Facebook Comments容器设置为"display:block",然后在页面加载后将其设置为"display:none",则iframe将获得正确的height属性.我很好奇是什么原因造成了iframe高度设置的差异.
我的解决方法是加载页面,将容器的样式设置为'display:block; 身高:1px; 宽度:1px; border:none'然后在页面加载后使用javascript将容器设置为'display:none'.我只是好奇是什么导致了这个,如果有一个比我正在做的更好的解决方法.
任何人都可以解释这种现象,并告诉我建议的解决方案是什么?
供您参考,下面是我的标记的简化版本,没有解决方法.如果您在浏览器中加载它并单击"显示注释"按钮,您将看到大的灰色区域,它是Facebook注释容器,并且比实际注释框大得多.
<!DOCTYPE html>
<html>
<head>
<title>Facebook Commments Page</title>
<style type="text/css">
.initial-content { width: 100%; overflow: hidden; }
.show-comments-button { float: left; background: #aaa; padding: 6px;}
#facebook-comments { display: none; background: #eeeeee; }
</style>
<script>
function showComments(e){
var commentContainer = document.getElementById('facebook-comments');
commentContainer.style['display'] = 'block';
}
</script>
</head>
<body>
<div class="initial-content">
<h1>My little web app</h1>
<p>Here is the content a user sees when first loading the page.</p>
<div class="show-comments-button" onclick="showComments(event);">Show Comments</div>
</div>
<div …Run Code Online (Sandbox Code Playgroud) 在过去的一年里,我一直在研究用VB 6.0编写的一些遗留代码.在过去几天的某个时间,"参考"菜单项从菜单栏上的"项目"菜单下拉列表中消失.过去一年我一直在使用这个版本的VB工作室,没有任何问题.最近唯一改变的是我开始使用VSS插件来检查Visual Studio中的代码.这个插件是在我用VB 6开发的整年中安装的.我根本就没有使用它.这是其他任何人都遇到的问题,是他们已知的修复方法吗?