hi программисты, На самом деле у меня есть 3 формы, т. Е. Mdiparent form, mdichild и usercontrol. Форма usercontrol имеет treeview. Поэтому мне нужно обновить usercontrol из mdichildform. Я создаю экземпляр usercontrol и запускаю событие для обновления, но этого не происходит. Какие-либо предложения.Как обновить Usercontrol из другой формы в winforms?
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 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 как
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;
}
Вы можете разместить некоторые примеры кода, что вы до сих пор? – aleroot
Вы создаете новый экземпляр пользовательского элемента управления для дерева рефешей, который никогда не будет работать, используйте тот же экземпляр пользовательского элемента управления, который вы добавили в форму mdiChild для реферирования: D – BreakHead