2017-12-13 33 views
-1

부모 폼에 도구 모음 메뉴가 있고 사용자 컨트롤로 자식 폼을 패널로로드하고 있습니다. 사용자가 부모 형태로 메뉴 막대를 클릭하면 자녀 양식으로 이벤트를 발생시켜야합니다.부모 폼에서 호출 된 자식 폼에서 C# raise 이벤트 부모 개체 폼에서 호출 된

다음
//Character Name 
private void randomNameToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     if (_SQL_Settings.TabControl == "Character Builder") 
     { 

     } 
     else 
     { 
      MessageBox.Show("You must be in the Character Builder Screen 
         To Generate A Random Character Name, Please Try Again."); 
     } 
    } 
    catch(Exception ex) 
    { 

    } 
} 

//Character 
private void randToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     if (_SQL_Settings.TabControl == "Character Builder") 
     { 

     } 
     else 
     { 
      MessageBox.Show("You must be in the Character Builder Screen 
          To Generate A Random Character, Please Try Again."); 
     } 
    } 
    catch (Exception ex) 
    { 

    } 
} 

내가 부모 폼 내 자식 폼을 작성 곳이다 : 여기

부모 컨트롤의 이벤트 내가 해고하려는 기능 여기

case "Character Builder": 
    { 
     Character_Builder CC = new Character_Builder(); 

     panCC.Controls.Clear(); 
     CC.Dock = DockStyle.Fill; 
     panCC.Controls.Add(CC); 

     CC.Main_Menu += Main_Menu; 
     break; 
    } 

된다 사용자가 상위 양식 메뉴 항목을 클릭하면

private void Generate_Raondom_Character() 
{ 
    try 
    { 

    } 
    catch(Exception ex) 
    { 

    } 
} 

private void Generate_Random_Character_Name() 
{ 
    try 
    { 

    } 
    catch (Exception ex) 
    { 

    } 
} 

나는이 두 가지 이벤트를 추가했습니다. 나는 자녀 양육 양식에 있지만 부모 양식에 있어야한다고 생각합니다.

이벤트 :

public event EventHandler Random_Character; 
     public event EventHandler Random_Name; 

사람이 내가이 작업을 얻기 위해 무엇을해야하는지 알고 있나요? 샘플이 좋을 것입니다. 나는 VB에서 그것을하는 법을 알고 C#.

+0

그 friging * 양식 * not _Forum_ – TheVillageIdiot

답변

1

나는 하나의 해결책이있다. 이것은 내가하고 싶었던 것이 아니지만 효과가있는 것 같습니다. 컨트롤을 찾고 컨트롤 텍스트를 편집 할 때까지 내 자식 포럼의 컨트롤을 반복합니다. 나는 이벤트를 사용하고 싶었지만 이것 역시 효과가 있다고 생각합니다. 다른 사람이 할 수있는 더 좋은 방법이 있다면 다음을 공유하시기 바랍니다.

if (_SQL_Settings.TabControl == "Character Builder") 
      { 
       DataTable dt = new DataTable(); 
       dt = _SQL.Random_Character_Name(); 

       foreach (Control Parentctrl in panCC.Controls) 
       { 
        if (Parentctrl.Name == "Character_Builder") 
        { 
         foreach (Control Childctrl in Parentctrl.Controls) 
         { 
          if (Childctrl.Name == "cbFirstName") 
          { 
           Childctrl.Text = dt.Rows[0]["First_Name"].ToString(); 
          } 

          if (Childctrl.Name == "cbLastName") 
          { 
           Childctrl.Text = dt.Rows[0]["Last_Name"].ToString(); 
          } 

          if (Childctrl.Name == "cbCharacterTitle") 
          { 
           Childctrl.Text = dt.Rows[0]["Character_Title"].ToString(); 
          } 
         } 
        } 
       }