Tag: winforms

为什么VB6.0表单显示为C#表单?

我有一个窗体的COM DLL。 此DLL由C#应用程序使用。 我为我的C#应用​​程序启用了视觉样式。 我不希望视觉样式应用于COM DLL的forms。 但是,当我运行我的应用程序和Lanuch COM DLL的forms,它有视觉风格应用到它。 我将如何防止它? 许多人build议使用清单。 但是,无论我在互联网上看到什么样的清单,他们都使用通用控件6.如何创build使用通用控件5.0的清单? 有些人还build议使用ActivationContext。 但是,这也需要使用常规控件5.0的正确清单吗? 请提出一些build议。

在面板内的控件之上绘制(C#WinForms)

我知道这个问题已经被问了几次了,但到目前为止我还没有find一个好的解决scheme。 我有一个与其他控制面板。 我想要在面板上的所有控件上画一条线 我遇到了三种types的解决scheme(非他们的工作方式我想要的): 获取桌面DC和绘图在屏幕上。 如果它们与表单重叠,这将使用其他应用程序。 覆盖面板的“CreateParams”: = protected override CreateParams CreateParams { get { CreateParams cp; cp = base.CreateParams; cp.Style &= ~0x04000000; //WS_CLIPSIBLINGS cp.Style &= ~0x02000000; //WS_CLIPCHILDREN return cp; } } //注意我也尝试禁用WS_CLIPSIBLINGS 然后绘制一行OnPaint()。 但是…由于面板的OnPaint在其中的控件的OnPaint之前被调用,因此内部控件的绘制只是简单地绘制在行的顶部。 我见过有人build议使用消息filter来监听WM_PAINT消息,并使用一个计时器,但我不认为这个解决scheme是“好的做法”或者是有效的。 你会怎么做 ? 确定内部控件在X毫秒后完成绘图,并将计时器设置为X毫秒? 该屏幕快照显示closures了WS_CLIPSIBLINGS和WS_CLIPCHILDREN的面板。 蓝线画在小组的OnPaint上,只是被文本框和标签画上。 红线只是涂在顶部,因为它不是从面板的OnPaint(它实际上是一个button被点击的结果) 第三:创build一个透明的图层并在该图层上绘制。 我已经创build了一个透明的控制使用: protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; […]

如何在DataGridView中禁用sorting?

我怎样才能禁用sorting在DataGridView ? 我需要禁用头DataGridViewsorting。

如何禁用编辑文本框?

我想用文本框来显示一些文本。 我不能禁用它,因为那么滚动条将无法正常工作。 我怎样才能防止在多行文本框中的编辑,但使其显示,如果它启用,以便滚动条正常工作?

如何删除选定的DataGridViewRow并更新连接的数据库表?

我有一个Windows窗体应用程序(用C#编写)的DataGridView控件。 我需要的是:当用户select一个DataGridViewRow,然后点击一个“删除”button,该行应该被删除,接下来,数据库需要更新使用表适配器。 这是我迄今为止: private void btnDelete_Click(object sender, EventArgs e) { if (this.dataGridView1.SelectedRows.Count > 0) { dataGridView1.Rows.RemoveAt(this.dataGridView1.SelectedRows[0].Index); } } 而且,这只会删除一行。 我想在哪里用户可以select多行。

如何以编程方式检查C#中checkedlistbox中的项目?

我有一个checkedlistbox,我想自动勾选其中的一个项目。 CheckedItems集合不允许你添加东西。 有什么build议么?

当窗口最大化/不最大化时的事件

当您最大化一个表单或取消最大化时是否有事件被触发? 在你说Resize或SizeChanged之前:只有Size实际上改变才会被触发。 如果你的窗户大小与最大化的窗户大小相同,他们不会开火。 地点看起来像下一个最好的赌注,但这再次感觉就像赌博的巧合。

根据Winforms / C#中的文本和字体大小确定标签大小

我想知道是否有更好的方法来解决这个问题。 我想调整一个标签(垂直)来容纳一定数量的文本。 我的标签有一个固定的宽度(约60字符之前,它必须包装),约495像素。 字体也是一个固定的大小(12点afaik),但文字不是。 我想要做的就是在“NewLine”或文本必须包装时增加标签高度; 这个想法是,文本在标签中是完全可见的。 AutoSize不起作用,因为它的宽度会增加,而不是高度。 当然,我可以计算NewLines的数量,并添加:Newlines * LineHeight,然后 – 我设法把每行60个字符,只是划分字符的数量,并根据需要添加尽可能多的LineHeight像素。 我想知道是否有更专业的方式来做到这一点。 我的方法太“跛脚”了吗? 提前致谢。

如何清除combobox?

我有一些combobox设置为下拉列表,用户可以在其中select一个数字。 我也有一个清除button,应该清除combobox中的文本,但我似乎无法得到它。 我试过了: //doesn't work cboxHour.Text = ""; 和 //doesn't work cboxHour.ResetText(); 这似乎应该是如此直截了当,但我只是没有得到它。

如何检测Windows关机或注销

我需要检测Windowsclosures(或重新启动)或用户注销时。 我需要在应用程序closures之前正确closures应用程序。 我注意到在Windowsclosures的时候没有出现任何退出应用程序事件。 我读过这篇文章有没有办法在C#中检测到Windows关机/注销并取消该操作(询问用户后) 但是我不确定在结束之前我应该​​在哪里执行操作。 谢谢。