小编TJ_*_*her的帖子

如何修复嵌套的winform控件闪烁问题

我目前正在开发一个程序,该程序使用相当复杂的嵌套winform控件结构,当用户进行某些选择时,这些控件会动态更改.有关控件的具体布局的详细信息,请参阅此问题.

在进行选择时,会对由用户控件控制的基础模型进行大量更新.然后,这导致所显示的控件的大小/位置/可见性的一系列相应变化.所有这些变化都会导致屏幕上控件的剧烈闪烁.我需要以某种方式修复此问题,以便每次用户进行选择时,屏幕基本上都会冻结,直到所有控件更新完成.

我试图在许多不同的地方和方式使用Control.SuspendLayout/Control.ResumeLayout方法,我无法消除疯狂的闪烁.我认为在更改期间暂停根控件上的布局会解决问题,但是当更改子控件时,看起来这个SuspendLayout没有帮助.

我是否需要使用其他方法而不是SuspendLayout?有没有办法我可以调试SuspendLayout,看看为什么它似乎没有级联到所有的子控件?

c# layout user-controls winforms

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

当顶级命名空间包含基类和内部命名空间时,C#命名空间和类/子类命名约定包含子类

我正在尝试为特定的工程应用程序设计一个类库,我正在努力确保我的类和命名空间命名约定有意义.

我有以下情况:

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)

c# namespaces naming-conventions classname

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

将.Net UserControl添加到TabPage时调整大小问题

我有一个复杂的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.

任何人都可以给我任何关于寻找什么或可能导致这类问题的方向吗?

提前谢谢.

.net c# user-controls tabpage winforms

6
推荐指数
2
解决办法
3294
查看次数

为什么"Facebook评论"iFrame在装入CSS'display:none'的容器中时有不同的高度?

我正在编写一个加载页面的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)

html javascript css iframe facebook-iframe

6
推荐指数
1
解决办法
2551
查看次数

我在VB 6.0的Project菜单中缺少References选项

在过去的一年里,我一直在研究用VB 6.0编写的一些遗留代码.在过去几天的某个时间,"参考"菜单项从菜单栏上的"项目"菜单下拉列表中消失.过去一年我一直在使用这个版本的VB工作室,没有任何问题.最近唯一改变的是我开始使用VSS插件来检查Visual Studio中的代码.这个插件是在我用VB 6开发的整年中安装的.我根本就没有使用它.这是其他任何人都遇到的问题,是他们已知的修复方法吗?

vb6 visual-sourcesafe visual-studio

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