Я создаю собственный TreeView в C #, унаследованный от обычного Forms.TreeView, и мне нужно установить флажок, чтобы щелкнуть текст узла.Это сделано.Однако вызванное событие AfterCheck отправляет действие EventArgs как неизвестное, а не как мышь.
Чтобы решить эту проблему.Я попытался изменить узел, затем создать новый TreeViewEventArgs с правильным TreeViewAction и запустить AfterCheck.
#region Override OnNodeMouseClick
/// <summary> Allows the node to change when it's name is clicked </summary>
/// <param name="e"></param>
protected override void OnNodeMouseClick(TreeNodeMouseClickEventArgs e)
{
base.OnNodeMouseClick(e);
#region Get in which pixel the name begins
TreeNode node = e.Node; //Stores the node
int i = 0; //Counter of how many parent nodes the node has
#region Counts how many parent nodes the clicked node has
while(node.Parent != null)
{ node = node.Parent; i++; }
#endregion
int margin = 40 + 20 * i; //Defines the pixel on which the name in the node starts
#endregion
if (e.X >= margin)
{
e.Node.Checked = !e.Node.Checked; //Changes th
MouseClickEventArgs = new TreeViewEventArgs(e.Node, TreeViewAction.ByMouse);
OnAfterCheck(MouseClickEventArgs);
}
}
#endregion
Однако, это, очевидно, вызывает событие дважды.Один раз с неизвестным действием, а другой с действием ByMouse.
Различие между типом Action необходимо для другой части кода, а также является причиной того, что событие не должно запускаться дважды.
Спасибо за вашу помощь