1

所以我有一个 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 是不可能的?

4

0 回答 0