草庐IT

WinForms

全部标签

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

我目前正在开发一个程序,该程序使用相当复杂的嵌套winform控件结构,这些控件会随着用户做出某些选择而动态变化。要更详细地了解控件的具体布局,对于这个问题来说太过广泛了。每当做出选择时,都会对由用户控件控制的基础模型进行大量更新。然后,这会导致所显示控件的大小/位置/可见性发生一系列相应的变化。所有这些变化都会导致屏幕上的控件出现令人痛苦的强烈闪烁。我需要以某种方式解决此问题,以便每次用户进行选择时,屏幕基本上会卡住,直到所有控件更新完成。我尝试在许多不同的地方和方式中使用Control.SuspendLayout/Control.ResumeLayout方法,但我无法消除疯狂的闪烁

c# - 取消后台任务

当我的C#应用程序关闭时,它有时会陷入清理例程。具体来说,后台工作人员没有关闭。这基本上就是我试图关闭它的方式:privatevoidApp_FormClosing(objectsender,FormClosingEventArgse){backgroundWorker1.CancelAsync();while(backgroundWorker1.IsBusy);//卡在这里。}我应该采用其他方式吗?我正在使用MicrosoftVisualC#2008ExpressEdition。谢谢。附加信息:后台工作人员似乎没有退出。这是我的:privatevoidbackgroundWorker

c# - Invalidate() 和 Refresh() 都不会调用 OnPaint()

我试图在下面的代码中从第1行转到第2行:使用系统;使用System.Windows.Forms;命名空间MyNameSpace{内部类MyTextBox:System.Windows.Forms.TextBox{protected覆盖voidOnEnabledChanged(EventArgse){base.OnEnabledChanged(e);无效();//Line#1-可以到达这里刷新();}protected覆盖voidOnPaint(PaintEventArgse){base.OnPaint(e);System.Diagnostics.Debugger.Break();//第

c# - 如何允许用户编辑列表框中的项目?

我想创建一个允许用户编辑项目的ListBox控件,例如Launchy中扩展的列表框。这在WinForms中可能吗?我尝试在该列表框中使用AutoitWindowInfo,它显示为QWidget(可能与Qt相关)。 最佳答案 尝试使用ListViewcontrol,而不是。设置它的LabelEditproperty为True以允许用户编辑项目的名称。要允许用户编辑新插入的项目上的文本,您可以使用以下代码:privatevoidAddItemToListView(){//AddanewitemtotheListView,withanem

c# - DrawToBitmap 没有截取所有项目的屏幕截图

我目前有这段有用的代码,是我在StackOverflow的其他地方找到的:form.DrawToBitmap(bmp,newRectangle(0,0,bmp.Width,bmp.Height));我有一个带有几个文本框/下拉菜单和一个大图片框的表单。然后我将较小的图片框放在这个大图片框的顶部。当我查看截取的屏幕截图时,它显示了表单,但出于某种原因没有显示放置在大图片框上的较小图片框? 最佳答案 我在Control.DrawToBitmap()的文档中看到了这个限制:Controlsinsidecontainersarerender

c# - 将 PictureBox 中的图像调整到尽可能大,同时保持纵横比?

我试图让PictureBox控件中的图像根据窗口的大小自动调整其大小,但保持纵横比。到目前为止,只需将SizeMode设置为StretchImage即可使图像拉伸(stretch)以适合整个PictureBox控件。这忽略了宽高比,这不是我想要的。是否可以保持宽高比,但仍将图像拉伸(stretch)到最大,它可以随着表单大小的变化而动态移动?是否有可能做到这一点并且它仍然居中?我想我可以在每次调整窗口大小时在内存中重新创建图像,但这似乎是个坏主意。 最佳答案 我相信这是PictureBoxSizeMode.Zoom的效果.文档说:T

c# - 将 excel 数据粘贴到空白 DataGridView - 索引超出范围异常

我有一个包含以下内容的excel表:所以,我想要实现的是从Excel中复制它并将其粘贴到空白的DataGridViewView中。这是我目前的代码:privatevoidPasteClipboard(DataGridViewmyDataGridView){DataObjecto=(DataObject)Clipboard.GetDataObject();if(o.GetDataPresent(DataFormats.Text)){string[]pastedRows=Regex.Split(o.GetData(DataFormats.Text).ToString().TrimEnd("

c# - 学习 Windows 窗体与 Windows Presentation Foundation

所以我一直在考虑申请Microsoft认证,我必须(目前)在WindowsForms和WPF之间做出选择来开发Windows应用程序。我对Windows窗体有很好的了解,但以前从未尝试过WPF。此外,我居住的大多数职位发布似乎都是面向WinForms的。这可能会在未来几年发生变化,所以我想知道我是应该开始学习WPF还是坚持使用久经考验的真实Forms。有什么见解吗? 最佳答案 虽然大多数当前的开发人员职位都集中在WinForms(或ASP.NET)上,但WPF正开始被接受为一个“严肃”的平台。认真的意思是人们开始考虑将它用于LOB应

c# - 当子控件具有焦点时在窗体上捕获 KeyUp 事件

我需要在我的表单中捕获KeyUp事件(以切换“全屏模式”)。这是我正在做的:protectedoverridevoidOnKeyUp(KeyEventArgse){base.OnKeyUp(e);if(e.KeyCode==Keys.F12)this.ToggleFullScreen();}privatevoidToggleFullScreen(){//Snazzycodegoeshere}这很好用,除非窗体上的控件具有焦点。在那种情况下,我根本没有收到该事件(也尝试过OnKeyDown-也没有运气)。我可以处理来自子控件的KeyUp事件,但窗体上的控件是动态生成的,并且可能有很多-每

c# - 将枚举属性数据绑定(bind)到网格并显示描述

这是与HowtobindacustomEnumdescriptiontoaDataGrid类似的问题,但就我而言,我有多个属性。publicenumExpectationResult{[Description("-")]NoExpectation,[Description("Passed")]Pass,[Description("FAILED")]Fail}publicclassTestResult{publicstringTestDescription{get;set;}publicExpectationResultRequiredExpectationResult{get;set;