使用 ListView.FindItemWithText 的注意事项

Posted by NosaLee in .NET Programming on 03-11-2013. Tags: , , , , ,

© 牧山道人,转载请注明原文网址。
_____________________________________

在 View = Details 的 ListView 中,如果 ListView 已按某列排过序,则使用 ListView.FindItemWithText 有时会找出本已删除之 Item。

解决方法:
在 使用 FindItemWithText 之前重置一下 ListView 的当前排序:
lv.Sorting = SortOrder.None
该语句不影响界面显示,但可保证 FindItemWithText 正常工作。

此外,在批量添加 Items 前[……]

Read More…

[……]

Read More…

.NET 中执行拖放操作(drag-and-drop)时如何开启鼠标指针效果?

Posted by NosaLee in .NET Programming on 03-11-2013. Tags: , , , , , , , ,

© 牧山道人,转载请注明原文网址。
_____________________________________

当我们将某控件的 AllowDrop 属性设为 True 之后,即可在其 DragDrop 事件中对拖放动作进行编码。

但这里有个很重要的问题:
只是改变 AllowDrop 属性,用户将对象(文件、文件夹等)拖放进该控件时,鼠标指标仍然是禁止状态,用户只能认为该控件不支持拖放,而你实际上为拖放操作编写了代码。

此时,这段代码理论上有效,但实际上没作用。

怎么解决这个问题呢?很简单:
在该控件的 DragEnter 事件(拖进时)中编写以下代码即可:[……]

Read More…

请注意 .NET 中 Single/float 数据类型的问题

Posted by NosaLee in .NET Programming on 14-10-2013. Tags: , , , , ,

© 牧山道人,转载请注明原文网址。
_____________________________________

今天解决了一个问题:Dictionary 泛型容器的 Key 重复,导致 Dictionary 转 SortedDictionary 时报错。

究其原因,是将 Single/float 数据类型作为自定义 Comparer 类型引起的。

原理不多讲,请看下面的例子:
Single/float 的 293830.001 与 293830 相等,甚至 293830.01 也等于 293830,但 830.001 与 830 却不相等,也就是说达到一定数量级后,.NE[……]

Read More…

.NET 中如何捕获 WebBrowser 控件的击键事件(KeyPress/KeyDown/KeyUp)?

Posted by NosaLee in .NET Programming on 28-03-2013. Tags: , , , , , , , ,

作者:牧山道人
原文地址:http://www.seeksunslowly.com/dot-net-捕获-webbrowser-控件-击键事件-keypress-keydown-keyup
转载请注明出处,谢谢。
_____________________________________

有时,我们需要处理用户在设计模式的 WebBrowser 控件中的击键事件(比如用于判断 WebBrowser 内容是否发生变化),但遍寻所有 WebBrowser 支持的事件,没有发现 KeyPress/KeyDown/KeyUp 事件。

WebBrowser 其实就是一个 IE,其本身相[……]

Read More…

C# 及 VB .NET 工具栏按钮(ToolStripButton)快捷键设置方法建议及注意事项(特别是当窗体中有 WebBrowser 控件时)

Posted by NosaLee in .NET Programming on 26-03-2013. Tags: , , , , ,

作者:牧山道人
原文地址:http://www.seeksunslowly.com/vb-net-toolstripbutton-shortcuts-webbrowser-sc
转载请注明出处,谢谢。
_____________________________________

因为工具栏按钮(ToolStripButton)本身并不支持快捷键,即没有 ShortcutKeys 属性,所以需要单独编码实现。

如下图所示:

ToolStripButton 无 ShortcutKeys 属性!

常用方式有两种,一是通过 Form 的 KeyDown/KeyUp 事件实现(需要将 Form 的 KeyPreview 属性设为 True);[……]

Read More…

如何解决 .NET WebBrowser 控件在 IE9+ 浏览器下不能编辑/输入的问题?

Posted by NosaLee in .NET Programming on 19-11-2012. Tags: , , , , , , , ,

作者:牧山道人
原文地址:http://www.seeksunslowly.com/如何解决-net-webbrowser-控件-ie9-浏览器不能编辑输入的问题
转载请注明出处,谢谢。
_____________________________________

假如 WebBrowser 控件名为 wb,则以下代码即可令 WebBrowser 在 IE9+ 浏览器下可编辑:

[cc lang=”vbnet”]
Private Sub wb_DocumentCompleted(ByVal sender As Object, _[……]

Read More…

Visual Studio 中去掉 VMWare 菜单的终极方法

Posted by NosaLee in .NET Programming on 10-11-2012. Tags: , , , , ,

作者:牧山道人
原文地址:http://www.seeksunslowly.com/visual-studio-中去掉-vmware-菜单的终极方法
转载请注明出处,谢谢。
_____________________________________

大家好,话说装了 VMWare 后,Visual Studio 菜单栏便出现了 VMWare 菜单。
据说,这会影响 VS 启动速度,但现在电脑很快,有多大影响本道倒不清楚,但作为处女座的人,肯定不会容许用不上的菜单一直挂在那里。

百度 Google Bing 了半天,老实说,真没人解决这个问题,不过他们提到的方法或许对你合用,[……]

Read More…

.NET 如何知道某窗口是被哪个窗口打开的?

Posted by NosaLee in .NET Programming on 27-08-2012. Tags: , , , , , , , ,

作者:牧山道人
原文地址:http://www.seeksunslowly.com/dot-net-如何知道某窗口是被哪个窗口打开的
转载请注明出处,谢谢。
_____________________________________

使用场景
比如有一个输入密码的公用窗口 FormA,可能会被多个窗口开启。
在 FormA 窗口中也许会有操作调用窗口的代码,此时就需要确定调用窗口是哪个。

实现方法
很简单,Form 类的 Show() 以及 ShowDialog() 均可包含一个参数,表示被开启窗口的所有者。
一般用法为:在需要开启 FormA 的窗口中写下 Form[……]

Read More…

VB .NET API 函数或外部 DLL 函数工作异常的处理方式之一

Posted by NosaLee in .NET Programming on 27-07-2012. Tags: , , , , , , , ,

作者:牧山道人 原文地址:http://www.seeksunslowly.com/vb-net-api-函数或外部-dll-函数工作异常的处理方式之一 转载请注明出处,谢谢。 _____________________________________   有时,我们会发现在 VB6 中工作正常的 API 函数或外部 DLL 函数在 VB .NET 中工作异常。 笔者昨天也碰到到这样的问题,后来经过调试,发现原因是 VB6 中的 Long 数据类型在 VB .NET 中应声明为 Integer(事实上其表示的范围是等价的)。 比如,以下 VB6 使用的 AP[……]

Read More…

VB .NET 如何使用通配符批量删除文件

Posted by NosaLee in .NET Programming on 27-07-2012. Tags: , , , , , , , ,

作者:牧山道人 原文地址:http://www.seeksunslowly.com/vb-net-如何使用通配符批量删除文件 转载请注明出处,谢谢。 _____________________________________ 在编程工作中,使用通配符批量删除文件的需求随处可见。 对 .NET 来说,实现起来非常简单,不需要遍历目录即可实现。 使用 Kill 方法即可完成! 代码示例: Microsoft.VisualBasic.FileSystem.Kill("E:\test\*.jpg") 对于 C#,同样可使用 Kill 实现,不过请注[……]

Read More…