1
에 ToolStripMenuItems의 속성을 수정할 수 없습니다, 내가 좋아하는 뭔가를하고 있어요 :자신의 온 클릭 이벤트 내 onClick 이벤트 핸들러에
private void myToolStripItem_Click(object sender, EventArgs e)
{
Form form = (Form)(((taskBarToolStripMenuItem)sender).formReference);
if (form != this.ActiveMdiChild)
{
if (!form.Visible)
form.Show();
form.Activate();
((taskBarToolStripMenuItem)sender).isSelected = true; //set it to true, so the renderer will draw them differently
}
}
을 taskBarToolStripMenuItem은 ToolStripMenuItem의 서브 클래스입니다. 내 사용자 지정 ToolStripSystemRenderer에 도착하면 item에 "isSelected"속성이 true로 변경되고 false로 유지되는 항목이 있는지 확인합니다. 이 문제는 다른 속성에서 발생합니다. 태그, 텍스트 등을 시도했습니다 ... 이유가 무엇입니까? 감사합니다
나는 그것을 시도했다 : var item = (ToolStripMenuItem) sender; item.Tag = "MYTAG"; . 그런 다음 렌더러의 "OnRenderMenuItemBackground"에서 Console.WriteLine ((ToolStripMenuItem) e.Item.Tag); 나는 널이된다. 아무 것도 MenuItems 속성을 다시 쓸 수 있습니까? 나는 "var item ="과 "e.Item"이 같은 참조임을 확신한다. – francis
이 렌더러를 다른 아이템의 렌더러와 섞지 않았습니까? 코드에서이 작업을 시도해야만했습니다. – helgeheldre
@helgeheldre 확신합니다. 사실, myToolStripItem_Click() 내에서 item.Text = "Change"와 같은 항목을 처리하면 항목의 텍스트도 변경되지 않습니다. 어떤 이유로 든 보낸 사람 개체가 내 경우에 참조로 전달되지 않는 것 같습니다. 그래서 원본 개체를 수정할 수 없습니다. – francis