aleborgMedlem sedan jan. 20012 962 inlägg
Jag har en WinForm där jag placerat en tabcontrol.
På en av tabsidorna har jag placerat en userkontroll som har följande kod vid dubbelklick i en datagrid:
Form1 f = new Form1();
f.LoadUser(Convert.ToInt32(row.Cells[0].Value.ToString()));
i Form1 som huvudformuläret heter finns följande kod:
public void LoadUser(int userid)
{
UltraTab kinfo =(UltraTab)tabMain.Tabs.GetItem(0);
tabMain.SelectedTab = kinfo;
kinfo.Enabled=true;
MessageBox.Show(userid.ToString());
customerInfo1.LoadContactInfo(userid,2);
}
Här ska det växlas tabsida och viss kod ska köras mot den userkontroll som finns på den tabsidan.
Messageboxen visas men tabben byts aldrig och customerInfo1.LoadContactInfo(userid,2); får ingen effekt.
Om jag testar med följande i Form1_Load:
private void Form1_Load(object sender, System.EventArgs e)
{
LoadUser(30000);
}
Så körs allt som det ska!
Vad gör man? Det funkar från Form1 men inte från userkontrollen!
aleborgMedlem sedan jan. 20012 962 inlägg
Efter lite sökning här på wF så löstes alla mina problem :D
http://www.webforum.nu/showthread.php?s=&forumid=29&threadid=78585&highlight=usercontrol
bytte
Form1 f = new Form1();
f.LoadUser(Convert.ToInt32(row.Cells[0].Value.ToString()));
mot
((Form1)this.ParentForm).LoadUser(Convert.ToInt32(row.Cells[0].Value.ToString()));
aleborgMedlem sedan jan. 20012 962 inlägg
Mer problem :(
om jag kör följande kod från en en annan form (dialog)
((Form1)this.ParentForm).LoadUser(30000);
så får jag felmeddelande om att "Objektreferensen har inte angetts till en instans av ett objekt."
Det funkar i Form1 men inte från en annan form i samma projekt.
Någon som har koll på detta?
aleborgMedlem sedan jan. 20012 962 inlägg
Lösningen för dom som är intresserade:
om man öppnar en dialog så här:
MinDialog f = new MinDialog();
f.ShowDialog(this.ParentForm);
så kan man inte använda
this.ParentForm
utan man måste använda
this.Owner för att kalla på en publik funktion i den "formen" som öppnade dialogen.