所以我有一个 C# .Net Compact Framework 3.5 应用程序,其中有一个 ListView。该 ListView 应该是 MultiSelect (通过像在文件资源管理器中那样拖动它们来一次选择多行)。
因为没有即时属性,所以我向 ListView 发送了一条样式消息,并使用它取消设置 LVS_SINGLESEL。在我的代码中,它看起来像这样:
public const int GWL_STYLE = -16;
public const int LVS_SINGLESEL = 0x0004;
[DllImport("coredll")]
public static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("coredll")]
public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
public static void EnableLVMultiSelect(System.Windows.Forms.ListView lv)
{
int style = GetWindowLong(lv.Handle, GWL_STYLE);
SetWindowLong(lv.Handle, GWL_STYLE, (style & ~LVS_SINGLESEL));
}
这段代码现在所做的是,如果我在最后一行之后开始,我可以选择多行。但是我不能像在文件资源管理器中那样选择 10 行中的第 2、3、4 行。我在具有不同 Windows Mobile 版本(5.0 和 6.5)的两个不同设备上进行了尝试,它们的行为都相同。
有什么我想念的吗?或者这对于 .Net Compact Framework 是不可能的?