草庐IT

Winforms

全部标签

C# Form.TransparencyKey 对不同颜色的工作方式不同,为什么?

昨天我发现了一些很奇怪的东西(我认为)。看起来Form.TransparencyKey根据用作BackgroundColor和TransparencyKey的颜色给出不同的结果。如果您想重现此内容,请执行以下操作:创建新的Windows窗体应用程序在表单上拖放一个面板将BackgroundColor设置为“Green”并将Form1的TransparencyKey也设置为Green运行程序并将带有“孔”的Form放在某物上,您会看到您可以点击该孔(如MSDN所述)现在将两种颜色都更改为“红色”并运行应用程序-您会看到“洞”,但您无法再点击它你知道为什么会这样吗?规则是什么?我将.NET

具有自定义边框和圆边的 C# 窗体

这个问题在这里已经有了答案:HowtoDrawaRoundedRectanglewithWinForms(.NET)?(6个答案)关闭4年前。我正在使用此代码制作我的表单(FormBorderStyle=none)具有圆角边缘:[DllImport("Gdi32.dll",EntryPoint="CreateRoundRectRgn")]privatestaticexternIntPtrCreateRoundRectRgn(intnLeftRect,//x-coordinateofupper-leftcornerintnTopRect,//y-coordinateofupper-lef

c# - 需要对我解决此 Winforms 竞争条件的第二(和第三)意见

在博客等方面有上百个例子,说明如何实现一个记录前台GUI元素或为前台GUI元素提供状态的后台worker。它们中的大多数都包含一种方法来处理在生成工作线程和使用ShowDialog()创建前台对话框之间存在的竞争条件。但是,我想到一个简单的方法是强制在表单构造函数中创建句柄,这样线程将无法在创建句柄之前触发表单上的Invoke/BeginInvoke调用。考虑一个使用后台工作线程记录到前台的Logger类的简单示例。还假设我们不希望NLog或其他一些重量级框架来做一些如此简单和轻量级的事情。我的记录器窗口由前台线程使用ShowDialog()打开,但仅在后台“工作”线程启动之后。工作线

c# - winforms listview 不在详细 View 中显示项目

我卡住了....这是我将项目添加到我的ListView的代码:ListViewItemitem=newListViewItem(ProjectDomainName);item.Tag=relatedProject.ProjectId;lvwSelectedProjects.Items.Add(item);当我选择'View.List'作为View模式时,我会看到所有项目。当我选择'View.Details'(这是我想要的设置)时,我看到了......什么都没有。好吧,没什么,我确实得到了一个垂直滚动条,但没有项目。我也可以滚动,但没有项目....我还在ListView中添加了一列(没有

c# - Visual C# 窗体右键单击按钮

我想在VisualC#中制作一个扫雷类型的游戏,我想在我右键单击和左键单击按钮时发生不同的事情,我该怎么做?我试过这段代码,但它只记录左键点击:privatevoidbutton1_MouseClick(objectsender,MouseEventArgse){if(e.Button==System.Windows.Forms.MouseButtons.Left){MessageBox.Show("Left");}if(e.Button==System.Windows.Forms.MouseButtons.Right){MessageBox.Show("Right");}}

c# - 在 WinForms 中更新 BindingSource 不会更新数据源集合

我想在DataGridView中显示自定义集合在Windows窗体应用程序中。此自定义集合实现了ICollection,和IEnumerable.我已经设置了一个BindingSource,使用集合作为.DataSource属性。DataGridView设置为使用我的BindingSource因为它是数据源。当我使用BindingSource.Add()将新项目添加到集合中时方法,DataGridView使用新项目正确更新。BindingSource另一方面,DataSource不会:MyCustomCollectionmyCollection=newMyCustomCollectio

c# - Windows 窗体 DPI 缩放

我的应用程序在100%DPI设置下看起来不错,但是当用户选择不同的(125%或150%)时,单词不适合容器。我试着用我在这里找到的解决方案来解决这个问题:Detectwindowsfontsize(100%,125%,150%)这是:this.AutoScaleMode=AutoScaleMode.Dpi;它修复了150%的设置(让它有点模糊,但没关系),不幸的是,它没有为125%设置相同的设置,该设置在应用程序打算运行的PC上使用。是否有一些简单的解决方法,或者我是否必须手动重新排列每个表单? 最佳答案 CreatingaDPI-

c# - 为具有 KeyValuePair 列表的 ComboBox 选择最初选择的值作为 DataSource

我正在从List创建一个组合框的KeyValuePair.到目前为止,它在向用户提供描述性名称同时返回数字ID方面效果很好。但是,无论我尝试什么,我都无法选择最初选择的值。publicStartUpForm(){InitializeComponent();FlowLayoutPanelflowLayout=newFlowLayoutPanel();//Thisisnecessarytoprotectthetable,whichisforsomereasoncollapsing...flowLayout.FlowDirection=FlowDirection.TopDown;flowLa

c# - 我无法摆脱我的 ClipRectangle 我想哭

当覆盖自定义控件的OnPaint方法时,我得到了一个PaintEventArgs,其中包含一个Graphics对象和一个ClipRectangle。ClipRectangle对我来说太小了,所以我想要么将它扩展100像素,要么完全忽略它。无论我做什么,我似乎都无法突破ClipRectangle。到目前为止,我已经尝试过:e.ClipRectangle.Inflate(100,0);e.Graphics.ResetClip();e.Graphics.SetClip(newRectangle(x,y,w,h));父控件正在调用Invalidate(true)(强制使所有子控件的子控件失效)

c# - 模糊半透明形式的背景(如 Aero 玻璃)

我有一个无边框、不可调整大小的WPF窗体(WindowStyle=None、AllowsTransparency=True、ResizeMode=NoResize),背景是半透明的。下面是在记事本上运行的半透明红色矩形窗体的图片:但是,我希望背景变得模糊,就像Aeroglass那样,除了没有所有花哨的窗口边框和带条纹的彩色背景-我想自己处理。这是我希望它看起来像的模型:我怎样才能以最有效的方式实现这一目标?WinForms或WPF对我来说没问题。希望它应该使用与Aeroglass相同的东西(我对它只在启用Aero的情况下工作很好),而不是像将下面的屏幕区域捕获为位图并对其进行模糊处理这