Tag: winforms

当用户绘制的控件大小增加时,新区域不会重新绘制

我想我在这里错过了一些微不足道的东西。 我直接从Control派生出简单的控件。 我正在重写OnPaint并绘制矩形( e.Graphics.DrawRectangle )和其中的文本( e.Graphics.DrawString )。 我没有覆盖任何其他成员。 当控件调整为较小的尺寸时,它会很好地自我绘制,但是当它调整到更大的尺寸时,新区域不会被正确重新绘制。 一旦我再次将其调整为较小的尺寸,即使按一个像素,一切都正确重新绘制。 OnPaint被正确调用(适当的PaintEventArgs.ClipRectangle正确设置到新区域),但无论如何都不会绘制新区域(出现工件)。 我错过了什么? 编辑: 码: protected override void OnPaint(PaintEventArgs e) { // Adjust control’s height based on current width, to fit current text: base.Height = _GetFittingHeight(e.Graphics, base.Width); // Draw frame (if available): if (FrameThickness != 0) { e.Graphics.DrawRectangle(new Pen(FrameColor, FrameThickness), FrameThickness / 2, FrameThickness / 2, […]

如何区分用户单击链接和执行自动重定向的页面?

在我的WinForms应用程序中有一个C# WebBrowser控件 ,并且知道Navigating事件 ,我从来没有想出一个漂亮而优雅的解决方案: 如果用户主动导航到另一个URL,我想允许它。 如果页面“自己”重定向到另一个URL,我想取消它。 对于案例1 ,我可以想到一些案例: 用户单击标记并评估href属性以加载另一个URL。 用户使用onclick javascript事件处理程序单击元素,该处理程序调用使用window.location加载另一个URL的函数。 对于案例2,我可以想象: 加载的页面包含一个iframe标记,用于在IFrame中加载URL。 这会触发Navigating事件。 有一些JavaScript计时器在页面加载时启动,当它触发时,它使用window.location加载另一个URL。 加载的页面包含meta refresh标头标记,以在几秒钟后加载另一个URL。 所以我的问题是: 如何在Navigating事件(或任何其他机制)内部检测重定向是由用户显式触发还是由页面隐式触发? 更多信息 WebBrowser正在基于Windows的CMS后端应用程序中使用。 因此,我可以完全控制WebBrowser控件中加载的内容。 这意味着如果需要,我可以在发送到浏览器之前操作完整的HTML字符串。 如果它更适用,我也很乐意获得只能使用JavaScript的解决方案,我可以将其注入正在加载的HTML中。 (请注意,我确实认为这不是此SOpost的重复)

如何在WPF中创建一组广播菜单项?

WPF似乎缺少RadioMenuItem类或类似function。 在Windows.Forms ,菜单项具有RadioChecked属性,但WPF菜单项仅具有IsChecked 。 我可以将实际的RadioButton放在MenuItem ,但这感觉很奇怪,看起来很尴尬。 如何在WPF菜单中创建一组function类似单选按钮的菜单项? 有关参考,请参阅IE8中的“缩放”菜单。

Visual Studio中的常规设置

只是想知道是否有办法使Visual Studio 2008 Express Edition生成由我的应用程序的安装程序创建的正常 exe文件? 我厌倦了ClickOnce应用程序文件。 我已经设置了所有这些文件关联,现在我需要为我的应用程序实际安装一个安装程序,代码中的文件关联设置不起作用,因为现在它们是“ClickOnce”应用程序文件而不是普通的exe文件。 不,VS不会为ClickOnce应用程序创建任何exe文件。 任何帮助深表感谢 谢谢 :)

为什么关闭嵌套子对话框也会关闭父对话框?

我使用ShowDialog打开一个表单作为modal dialog。 此对话框允许使用ShowDialog再次打开另一个窗体作为模式对话框。 当最里面的对话框关闭时,这也会导致其父对话框关闭。 为什么会发生这种情况,我该如何预防呢? 我已经创建了问题的hello world版本来说明这一点。 表格1: private void OpenForm2Button_Click(object sender, EventArgs e) { Form2 testForm = new Form2(); DialogResult dialogResult = new DialogResult(); dialogResult = testForm.ShowDialog(); MessageBox.Show(“Form 2 returned: ” + Convert.ToString(dialogResult)); } 表格2: … this.Form2OKButton.DialogResult = System.Windows.Forms.DialogResult.OK; this.Form2CancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; … this.AcceptButton = this.Form2OKButton; this.CancelButton = this.Form2CancelButton; … private void OpenForm3Button_Click(object sender, […]

为Windows窗体实现TypeConverter

我想为自定义类型厚度实现TypeConverter。 我查看了像SizeConverter这样的微软发布的类型转发器 。 当我在我的Thickness属性上键入字符串或更改其中一个属性时,设计器使用它,它只是不将更改保存到’Designer.cs’。 它必须是从’Thickness’类型到’InstanceDescriptor’的转换,但我发现我的代码没有任何问题…… 这是Thickness : [TypeConverter(typeof(ThicknessConverter))] public struct Thickness { Double top; Double bottom; Double right; Double left; public Thickness(Double uniformLength) { top = uniformLength; bottom = uniformLength; right = uniformLength; left = uniformLength; } public Thickness(Double left, Double top, Double right, Double bottom) { this.left = left; this.top = top; this.right = […]

USING块在网站与Windows窗体中的行为不同

我在一些网站数据库代码中单步执行调试器,并在应用数据库更改之前结束执行。 但他们仍然写入数据库! 我尝试使用Windows窗体应用程序重新创建问题,但它没有写入数据库(预期的行为)。 我回到了网站,它做到了 。 这是一个简单的示例页面。 如果它有所不同,我在网站上运行它: protected void Page_Load(object sender, EventArgs e) { using (MsSqlDataContextDataContext db = new MsSqlDataContextDataContext()) { Product product = db.Products.First(p => p.id == 21); Debug.WriteLine(“Line 1”); // I learnt the hard way that if you try to update the database with the value // that already exists, it seems to […]

将权限从一个Windows文件夹复制到另一个

我需要创建一个小型的C#Windows应用程序,它将安全权限从一个文件夹复制到另一个文件夹。 这包括复制组权限。 接近这种挑战的最佳方式是什么? Yosief Kesete

Listview多选

有没有办法强制listview控件将所有点击视为通过Control键完成? 我需要复制使用控制键的function(选择项目集并取消设置其选择状态),以便用户可以同时轻松选择多个项目。 先感谢您。

关闭XDOCUMENT的实例

我收到了这个错误 该进程无法访问文件“C:\ test \ Person.xml”,因为它正由另一个进程使用。 IOException是UnHandled 如何在文件中保存内容后关闭xml文件的实例? using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Windows.Forms; using System.Xml; using System.Xml.Linq; namespace XmlAddDelRecord { public partial class Form1 : Form { public Form1() { InitializeComponent(); LoadDatagrid(); } private void LoadDatagrid() { try { XmlReader xmlFile; xmlFile = […]