In my C# Windows Form Application, I h开发者_Go百科ave Treeview control with checkboxes.
I want to hide check box of the certain tree node in TreeView control from user.How i do it?.
Please Guide me to get out of this issue...
This article explains on how you can hide the checbox of a certain node in a treeview.
Update
Explanation and code from the article:
Currently, there is not build-in support to get this done. But we can send a TVM_SETITEM message to the treeview control, set TVITEM structure's state field to 0, and TVITEM's hItem field to the treenode's handle. Then this treenode will be got rid of the checkbox.
Sample code lists below:
public const int TVIF_STATE = 0x8;
public const int TVIS_STATEIMAGEMASK = 0xF000;
public const int TV_FIRST= 0x1100;
public 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")]
static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
private void button1_Click(object sender, System.EventArgs e)
{
TVITEM tvi=new TVITEM();
tvi.hItem=this.treeView1.SelectedNode.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.treeView1.Handle, TVM_SETITEM, IntPtr.Zero, lparam);
}
This code hides the selected treenode's checkbox and it works well on my side. You may copy and paste in your project to have a test.
精彩评论