[英]A way to access class/method from parent form using usercontrol
我想提出一些建议或可能的解决方案,以从parentForm
到userControl
访问类或方法。
我想重用loadquizes()
,这只是为了使用相同表单上的userControl
从gradingSheet
表单重新加载dataGrid
。
我的项目结构是:
Mainform(Form)
|_Gradingsheet(MDIchild/Also a Form)
|_mypanel(inside the Gradingsheet)
|_updatequizes(usercontrol)
GradingSheet
代码调用userControl
private void updateQuizToolStripMenuItem_Click(object sender, EventArgs e)
{
quiz = new UpdateQuizes();
quiz.lrnLbl.Text = MelrnLbl.Text;
quiz.nameLbl.Text = MEnameLbl.Text;
quiz.quartervar.Text = quartervar.Text;
quiz.GradeLbl.Text = GradeLbl.Text;
quiz.subjLbl.Text = subjLbl.Text;
quiz.yearLbl.Text = yearLbl.Text;
UserControlPanel.Controls.Clear();
UserControlPanel.Controls.Add(quiz);
}
在UserControl
内部:
void insertQuiz()
{
using (MySqlConnection conn = new MySqlConnection(myConnection))
{
string query = "UPDATE GimenezSystem.quizes SET Q"+(quizcombo.SelectedIndex + 1) + " =?newval WHERE Year=?year and GradeLevel=?glevel and Subject=?subj and Quarter =?qtr and LRN =?LRN";
conn.Open();
using (MySqlCommand cmd = new MySqlCommand(query, conn))
{
try
{
cmd.Parameters.AddWithValue("?LRN", lrnLbl.Text);
//cmd.Parameters.AddWithValue("?quiz", quiz);
cmd.Parameters.AddWithValue("?newval", NewVal.Text);
cmd.Parameters.AddWithValue("?year", yearLbl.Text);
cmd.Parameters.AddWithValue("?glevel", GradeLbl.Text);
cmd.Parameters.AddWithValue("?subj", subjLbl.Text);
cmd.Parameters.AddWithValue("?qtr", quartervar.Text);
cmd.ExecuteNonQuery();
GradingSheet gr = GradingSheet.ActiveForm as GradingSheet;
gr.loadquizes();//here it gives me an error of object is not set for reference of instance or something like that T.T
}
catch (Exception ex)
{
MessageBox.Show("error" + ex);
}
}
conn.Close();
}
}
如果您真的想在多个地方重用该方法,则可以考虑在一个单独的类中实现该方法,并在所需的任何位置或用户控件中使用该方法,而不是在Form
或UserControl
中使用该方法。 代码行下面是问题。
GradingSheet gr = GradingSheet.ActiveForm as GradingSheet;
gr.loadquizes();//he
Instread将其放在单独的类中,例如
public class Helper
{
public void LoadQuizes()
{
//code here
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.