2012-09-26 3 views
0

메뉴 항목에 설치된 각 프린터를 표시하는 코드를 생성했습니다. 그러나 메뉴 항목을 클릭 할 때 이벤트를 발생시키는 방법을 파악할 수 없습니다. 지금은 관련이 없으므로 printernames를 얻은 코드를 제거했습니다.변수 도구 상자 메뉴 항목에서 이벤트를 만드는 방법 C#

string printerName; // contains the first printer name, later contains 2nd printername. This is variable. 

selectprinterNameMenuItem.DropDownItems.Add(printerName); // here do I add the new printer to the menu item. 

일반적으로 메뉴 항목에 이벤트를 추가 할 수 있어야합니다. 하지만 코드로 만들면 정확한 이름을 알 수 없습니다. 메뉴 항목을 클릭하면 어떻게 감지 할 수 있습니까?

+0

관련성이있는 코드 완성에서 어떤 이벤트가 표시되는지 또는 이벤트에서 디자이너를 볼 수 있습니다. 그러면 호출 된 내용과 사용 방법을 알 수 있습니다. – BugFinder

+0

어떤 프린터를 클릭했는지 알려주는 프린터 이름을 모르는 것입니까? 목록에 그 번호를 저장할 수도 있습니다 (또는 심지어 컨트롤에서 이름을 다시 가져 오는 것) – HaemEternal

답변

1

ToolStripItemCollectionAdd(String) 메서드는 생성 된 ToolStripItem을 반환합니다. (귀하의 코멘트에 따라)

string printerName; // contains the first printer name, later contains 2nd printername. This is variable. 

ToolStripItem addedItem = selectprinterNameMenuItem.DropDownItems.Add(printerName); // here do I add the new printer to the menu item. 
addedItem.Click += new EventHandler(printerName_Click); // here you register to the click event 

편집 :이 객체에 이벤트 핸들러를 추가 할 수 있습니다

이벤트 핸들러에 전달 보낸 사람 인수, 즉 사용하여 클릭 된 프린터 이름을 알 수 있습니다 :

void printerName_Click(object sender, EventArgs e) 
    { 
     ToolStripItem item = (ToolStripItem)sender; 
     string printerClicked = item.Text; 

     // whatever you want based on the printerName 
    } 
+0

고마워요. 이것은 나를 조금 도와 줬다. 그러나이 방법은 당신이 선택한 프린터가 중요하지 않습니다. 모두가 같은 이벤트를 일으킬 것입니다.이를 막기위한 쉬운 방법이 있습니까? 그렇지 않다면이 문제를 해결하기 위해 몇 가지 추가 코드를 작성하겠습니다. – 2pietjuh2

+0

제 편집을보세요. –

0

selectprinterNameMenuItem에서 ItemClicked를 클릭하십시오.

selectprinterNameMenuItem.DropDownItemClicked += new ToolStripItemClickedEventHandler(xyz); 

이벤트가 발생한 항목을 파악합니다.