0
我在TreeView中隐藏CheckBoxes的问题非常奇怪。当TreeView位于窗口中的第一个TabPage上时,一切正常,但当第二个TabPage中的TreeView处于第一个TreeNode时,它始终有复选框。TreeView关闭复选框
的代码我使用隐藏某些复选框看起来像这样:
private const int TVIF_STATE = 0x8;
private const int TVIS_STATEIMAGEMASK = 0xF000;
private const int TV_FIRST = 0x1100;
private const int TVM_SETITEM = TV_FIRST + 63;
public struct TVITEM {
public int mask;
public IntPtr hItem;
public int state;
public int stateMask;
[MarshalAs(UnmanagedType.LPTStr)]
public string lpszText;
public int cchTextMax;
public int iImage;
public int iSelectedImage;
public int cChildren;
public IntPtr lParam;
}
[DllImport("user32.dll")]
public static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
private void TurnOff(TreeNode node) {
TVITEM tvi = new TVITEM();
tvi.hItem = node.Handle;
tvi.mask = TVIF_STATE;
tvi.stateMask = TVIS_STATEIMAGEMASK;
tvi.state = 0;
IntPtr lparam = Marshal.AllocHGlobal(Marshal.SizeOf(tvi));
Marshal.StructureToPtr(tvi, lparam, false);
SendMessage(this.Handle, TVM_SETITEM, IntPtr.Zero, lparam);
Marshal.FreeHGlobal(lparam);
}
如果有人知道这个问题的解决方案,请分享。
只是猜测:它是否有助于首先选择第2页? – TaW
尝试修改树视图属性:将CheckBoxes设置为false。 – user3165438
禁用所有复选框不是一个解决方案,因为我希望它们在子节点中。他们应该只在父节点中隐形 – torpederos