2012-03-19 75 views
0

嗨程序员, 其实我有3种形式,即mdiparent形式,mdichild和用户控件。 usercontrol窗体有treeview.So我需要从mdichildform刷新usercontrol。我创建了用户控件的实例并激发了事件刷新,但不会发生。有什么建议么。如何从winforms中的其他窗体刷新Usercontrol?

   My UserControl code goes like this: 

      public partial class cHumanResource : UserControl 
       { 
    Human_Resource_Utility human_Record = new Human_Resource_Utility(); 
    MyConnection mc = new MyConnection(); 

    TreeNode tn = new TreeNode(); 
    TreeNode tn_dept = new TreeNode(); 

    List<TreeItemInfo> treeViewList = new List<TreeItemInfo>(); 

    private string LoginUser; 
    private List<FeaturesInfo> UserSettings = new List<FeaturesInfo>(); 

    public cHumanResource() 
    { 
     InitializeComponent();   


    } 
public void LoadEmpDetail() 
    { 
     tstriptxtSearch.Text = ""; 
     EmployeeSearch(""); 
     TreeLoad.CollapseAll(); 
     Application.DoEvents(); 
    } 
    } 

而像frmchild代码:像

public interface IMdiFormInterface 
{ 
    void RemoveActionBar(); 
    void CreateActionButtons(string mode,FeaturesInfo SETTINGS); 
    void ToggleExplorerBar(); 
    void ToggleExplorerBar(bool Visibility); 
} 

public interface IChildFormInterface { void CommandPass(string key,FeaturesInfo Settings);} 



public partial class frmAttnMain : Form, IMdiFormInterface 
{ 
    Attendance.SystemLogin syslogin = new SystemLogin(); 
    Utility_Mode.FileHandlingUtility fileHandling = new Attendance.Utility_Mode.FileHandlingUtility(); 
    string seltext = "100%"; 
    string selgototxt = "1"; 
    private static string CurUser=string.Empty; 
    private List<FeaturesInfo> menuname =null; 
    private int totalpage = 0; 
    FeaturesInfo Fmodel = new FeaturesInfo(); 
    private static frmAttnMain aForm = null; 
    private static List<FeaturesInfo> aFavmodel; 
    public static frmAttnMain Instance(string usercode,List<FeaturesInfo> fmodel,string Action) 
    { 
     aFavmodel = fmodel; 
     // aForm.loadDatabase(); 
    CurUser = usercode; 
} 
+0

你能后的你一些示例代码到目前为止做了什么? – aleroot 2012-03-19 10:08:00

+0

您正在创建一个用户控件的新实例来添加永远不会工作的树,使用您在mdiChild窗体上添加的用户控件的相同实例来重新创建:D – BreakHead 2012-03-19 10:11:10

回答

0

public partial class frmEmployeeInfo : Form,IChildFormInterface 
{ 

    MyConnection mc = new MyConnection(); 

    private bool _sect = false; 

    string curentrymode="ENTRYDEFAULTMODE"; 

    public void CommandPass(string key, FeaturesInfo FinalSetting) 
    { 

     IMdiFormInterface mdiForm = (IMdiFormInterface) this.MdiParent; 
     IHRM mdihrm; 

     switch (key) 
     { 
      case "NEW": 
       curentrymode = "ENTRYNEWMODE"; 

       if (CreateNew()) 
       { 
        mdiForm.CreateActionButtons(curentrymode,FinalSetting); 



       } 
       break; 
      case "SAVE": 
       curentrymode = "ENTRYDEFAULTMODE"; 

       if (SaveBasicInfo()) 
       { 
        mdiForm.CreateActionButtons(curentrymode,FinalSetting); 


        Application.DoEvents(); 
       } 
       break; 
      case "EDIT": 
       curentrymode = "ENTRYEDITMODE"; 
       if (EditBasicInfo()) 
       { 
        mdiForm.CreateActionButtons(curentrymode,FinalSetting); 
       } 
       break; 
      case "CANCEL": 
       curentrymode = "ENTRYDEFAULTMODE"; 
       mdiForm.CreateActionButtons(curentrymode,FinalSetting); 
       CancelBasicInfo(); 
       break; 

      case "REFRESH": 
       Refresh_Form(); 
       break; 

      case "CLOSE": 
       curentrymode = "ENTRYDEFAULTMODE"; 
       mdiForm.CreateActionButtons(curentrymode,FinalSetting); 

       this.Close(); 
       this.Dispose(); 
       break; 

      default: 
       MessageBox.Show("Other Button Clicked"); 
       break; 
     } 
    } 

而且frmMAin只要有你通过他们必须嵌套对象,让你“导航”的引用您可以访问他们的行为(在你的情况下刷新一个控件)。 您不必创建用户控件的新实例,否则将刷新刚刚创建的新控件的Treeview,而不是窗体上的控件。

一般情况下,你需要做的是这样

ParentForm.ChildForm.RefreshUserControl()(这可能是刷新使用该表格上的基准上ChildForm控制的公共方法)

相关问题