我编写了一个观察Windows.Forms设计器窗口的VisualStudio2013扩展。当开发人员在设计器窗口中更改控件时,扩展会尝试验证结果是否符合我们的UI样式指南。如果发现可能的违规行为,它们将列在工具窗口中。这一切都很好。但现在我想在设计器窗口中标记不一致的控件,例如用红框或类似的东西。不幸的是,我没有找到在设计器窗口中的控件上绘制装饰的方法。我知道如果您开发自己的ControlDesigner就可以绘制这些装饰,但我需要从控件设计器的“外部”进行绘制。我只有Dte2.ActiveWindow中的IDesignerHost,并且可以通过该主机访问控件和ControlDesi
我编写了一个观察Windows.Forms设计器窗口的VisualStudio2013扩展。当开发人员在设计器窗口中更改控件时,扩展会尝试验证结果是否符合我们的UI样式指南。如果发现可能的违规行为,它们将列在工具窗口中。这一切都很好。但现在我想在设计器窗口中标记不一致的控件,例如用红框或类似的东西。不幸的是,我没有找到在设计器窗口中的控件上绘制装饰的方法。我知道如果您开发自己的ControlDesigner就可以绘制这些装饰,但我需要从控件设计器的“外部”进行绘制。我只有Dte2.ActiveWindow中的IDesignerHost,并且可以通过该主机访问控件和ControlDesi
我有一个关于用户控件中面板自动调整大小的奇怪问题。此面板锚定到用户控件的所有4个边。但是锚定并不总是像它应该的那样工作:如果通过调整窗体大小来调整用户控件的大小,则右anchor和底部anchor将不起作用。但是,如果使用窗体中的拆分器调整控件的大小,则它可以正常工作。所有其他也受调整大小影响的控件都可以正常工作,只是这个面板不行。我看不出通过拆分器和通过表单调整大小之间的区别。仅当通过移动拆分器来调整大小时,在UserControl的OnResize中手动设置大小才有效。如果通过调整表单大小来调整大小,则面板的高度和宽度不会更改为新值。编辑:为了更清楚:将用户控件添加到TabPage
我有一个关于用户控件中面板自动调整大小的奇怪问题。此面板锚定到用户控件的所有4个边。但是锚定并不总是像它应该的那样工作:如果通过调整窗体大小来调整用户控件的大小,则右anchor和底部anchor将不起作用。但是,如果使用窗体中的拆分器调整控件的大小,则它可以正常工作。所有其他也受调整大小影响的控件都可以正常工作,只是这个面板不行。我看不出通过拆分器和通过表单调整大小之间的区别。仅当通过移动拆分器来调整大小时,在UserControl的OnResize中手动设置大小才有效。如果通过调整表单大小来调整大小,则面板的高度和宽度不会更改为新值。编辑:为了更清楚:将用户控件添加到TabPage
我有一个大概的想法,有一些明显的案例,但对我来说也有一些灰色地带——什么时候最好使用从组件扩展,什么时候最好创建用户控件?这与我试图解决的一个特定工作问题有关,但具体细节并不重要——对这个问题的一般回答对我来说就足够了。 最佳答案 在WPF和Windows窗体中,主要区别在于UserControl是控件的集合-由多个控件本身“组合”而成的可重用的单个对象。如果您要制作具有新行为的单个原始控件,而不是制作由较小控件组成的“控件”,则您将实现Component/CustomControl/Control而不是UserControl。组件
我有一个大概的想法,有一些明显的案例,但对我来说也有一些灰色地带——什么时候最好使用从组件扩展,什么时候最好创建用户控件?这与我试图解决的一个特定工作问题有关,但具体细节并不重要——对这个问题的一般回答对我来说就足够了。 最佳答案 在WPF和Windows窗体中,主要区别在于UserControl是控件的集合-由多个控件本身“组合”而成的可重用的单个对象。如果您要制作具有新行为的单个原始控件,而不是制作由较小控件组成的“控件”,则您将实现Component/CustomControl/Control而不是UserControl。组件
我的工作线程中有以下代码(下面的ImageListView派生自Control):if(mImageListView!=null&&mImageListView.IsHandleCreated&&!mImageListView.IsDisposed){if(mImageListView.InvokeRequired)mImageListView.Invoke(newRefreshDelegateInternal(mImageListView.RefreshInternal));elsemImageListView.RefreshInternal();}但是,有时使用上面的Invoke方
我的工作线程中有以下代码(下面的ImageListView派生自Control):if(mImageListView!=null&&mImageListView.IsHandleCreated&&!mImageListView.IsDisposed){if(mImageListView.InvokeRequired)mImageListView.Invoke(newRefreshDelegateInternal(mImageListView.RefreshInternal));elsemImageListView.RefreshInternal();}但是,有时使用上面的Invoke方
我想知道使用控件的Hide()方法与将Visible属性设置为false之间的区别。我什么时候想用一个而不是另一个? 最佳答案 它们是等价的。来自Control.Hide的文档:HidingthecontrolisequivalenttosettingtheVisiblepropertytofalse.你可以用反射器确认这一点:publicvoidHide(){this.Visible=false;}当您知道值时,您可能会使用Show()或Hide(),而当您将可见性作为参数时,您可能会使用Visible,尽管我个人总是会使用Vis
我想知道使用控件的Hide()方法与将Visible属性设置为false之间的区别。我什么时候想用一个而不是另一个? 最佳答案 它们是等价的。来自Control.Hide的文档:HidingthecontrolisequivalenttosettingtheVisiblepropertytofalse.你可以用反射器确认这一点:publicvoidHide(){this.Visible=false;}当您知道值时,您可能会使用Show()或Hide(),而当您将可见性作为参数时,您可能会使用Visible,尽管我个人总是会使用Vis