Tag: winforms

Visual Studio设计器中的抽象UserControlinheritance

abstract class CustomControl : UserControl { protected abstract int DoStuff(); } class DetailControl : CustomControl { protected override int DoStuff() { // do stuff return result; } } 我在表单中删除了一个DetailControl。 它在运行时正确呈现,但设计器显示错误并且无法打开,因为基本用户控件是抽象的。 目前,我正在考虑以下补丁,这对我来说似乎很不对,因为我希望子类被强制实现该方法。 class CustomControl : UserControl { protected virtual int DoStuff() { throw new InvalidOperationException(“This method must be overriden.”); } } class DetailControl : CustomControl { […]

在DataGridViewComboBoxColumn SelectedIndexChanged期间触发的事件

我有两列DataGridView 。 第一列是TextBoxCol(DataGridViewTextBoxColumn) ,第二列是ComboBoxCol(DataGridViewComboBoxColumn) 。 当ComboBoxCol更改其选定的索引值时,如何更改TextBoxCol值? (这应该在ComboBoxCol更改选定的索引时发生。不在离开列之后,如dataGridView_CellValueChanged ) 我已经阅读了一个与我遇到的几乎相同的问题,但我不明白答案(根据复选标记应该是正确的)。 这是链接。 – 几乎相同的主题

除非我移动光标,否则SendInput不会执行鼠标单击按钮

除非我移动光标,否则SendInput不会执行鼠标单击按钮。 我很感激对这一个的帮助,因为我似乎无法绕过它。 我有一个程序,在前景窗口上执行鼠标单击,我在其中使用SendInput模拟鼠标左键单击。 问题是,如果我将光标移动到点击位置而不是SendInput将进行点击,但是如果我不移动光标而不是没有点击发生,即使通过我传递x和y指向MouseInputData。 我想执行鼠标左键而不需要实际移动光标。 贝娄是我的课程(相当简单和直接前进) namespace StackSolution.Classes { public static class SendInputClass { [DllImport(“user32.dll”, SetLastError = true)] static extern uint SendInput(uint nInputs, ref INPUT pInputs, int cbSize); [DllImport(“user32.dll”)] static extern bool SetCursorPos(int X, int Y); [DllImport(“user32.dll”)] [return: MarshalAs(UnmanagedType.Bool)] static extern bool GetCursorPos(out Point lpPoint); [StructLayout(LayoutKind.Sequential)] struct INPUT { public SendInputEventType type; public MouseKeybdhardwareInputUnion mkhi; […]

如何同步两个多行文本框的滚动?

如何在C#(WinForms)中同步两个多行文本框的滚动? 在TextBox A中向上/向下滚动一行时,TextBox B也应向上/向下滚动。 反之亦然。 如果没有自定义控件,这是否可以实现?

TextBox的数据绑定

我有一个基本属性来存储Fruit类型的对象: Fruit food; public Fruit Food { get {return this.food;} set { this.food= value; this.RefreshDataBindings(); } } public void RefreshDataBindings() { this.textBox.DataBindings.Clear(); this.textBox.DataBindings.Add(“Text”, this.Food, “Name”); } 所以我在表单之外设置了this.Food然后它出现在UI中。 如果我修改this.Food ,它会正确更新。 如果我以编程方式修改UI,如: this.textBox.Text = “NewFruit” ,它没有更新this.Food。 为什么会这样? 我还为Fruit.Name实现了INotifyPropertyChanged ,但仍然相同。

如何在WebBrowser控件中注入CSS?

据我所知,有一种方法可以将javascript注入DOM。 下面是使用webbrowser控件注入javascript的示例代码: HtmlElement head = webBrowser1.Document.GetElementsByTagName(“head”)[0]; HtmlElement scriptEl = webBrowser1.Document.CreateElement(“script”); IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement; element.text = “function sayHello() { alert(‘hello’) }”; head.AppendChild(scriptEl); webBrowser1.Document.InvokeScript(“sayHello”); 是否有更简单的方法将css注入DOM?

调整右下角的无边框窗口大小

我希望用户在右下角调整无边框窗口的大小,就像我可以调整combobox控件的自动完成窗口一样。 我无法找到以这种方式配置表单的属性。 也许有人可以帮我解决这个问题。 可以在这里找到一张图片:

在Windows窗体应用程序窗体中嵌入文件资源管理器实例

我的(C#,.NET 3.5)应用程序生成文件,除了引发可以捕获和响应的事件之外,我还想在表单中向用户显示目标文件夹。 文件列表显示在与其他信息相同的表单中。 我正在使用WebBrowser控件的一个实例( System.Windows.Forms.WebBrowser ),然后导航到该文件夹​​。 这将显示资源管理器窗口的一些默认视图,左侧是文件摘要面板,“Tiles”(大图标和文本)视图中的文件。 例如, wb.Navigate(@”c:\path\to\folder\”); 我想压缩面板并在详细信息视图中查看文件列表。 用户可以通过右键单击上下文菜单来实现此目的,但我希望它能自动生成。 我宁愿不必构建自己的TreeView,DataGridView或其他任何东西; WebBrowser控件执行所有更新和重新排序,以及“免费”。 有没有更好的办法? 使用不同的控件或传递给控件的其他参数? 如果我可以捕获事件(例如,文件被选中/重命名/双击等),那就更好了!

System.Windows.Forms.Timer是否在与UI不同的线程上运行?

我有一个主线程创建一个表单对象,它创建并设置一个计时器,每分钟运行一个名为updateStatus()的函数。 但是updateStatus()也被主线程在几个地方调用。 但是,我不清楚它是否会导致任何同步问题。 C#中的System.Windows.Forms.Timer是否运行在主线程以外的其他线程上?

用户如何在winforms中在运行时调整控件大小

说我有一个pictureBox。 现在我想要的是用户应该可以随意调整pictureBox的大小。 但是我不知道如何开始这件事。 我搜索了互联网,但信息很少。 任何人都可以至少指导我从哪里开始?