如何从 Form 类调用方法
本文关键字:调用 方法 Form | 更新日期: 2023-09-27 18:30:43
现在我在一个名为 HelperClass 的类中有这段代码:
class HelperClass : CollegeSystem.GUI
{
public void selectStudent()
{
MySqlConnection conn; // connection object;
string connstring = "server=localhost;user Id=root;database=collegesystem;Convert Zero Datetime=True ";
try
{
conn = new MySqlConnection(connstring);
conn.Open();
MySqlCommand myCommand = new MySqlCommand("SELECT * FROM person", conn);
MySqlDataReader myReader;
myReader = myCommand.ExecuteReader();
cmbTable.Items.Clear();
while (myReader.Read())
{
cmbTable.Items.Add(myReader["personID"] + " | " + myReader["firstName"] + " | " + myReader["lastName"] + " | " + myReader["address"] + " | " + myReader["phoneNumber"] + " | " + myReader["postCode"] + " | " + myReader["dateOfBirth"]);
}
}
catch (Exception err)
{//handle the error with a message
lblInfo.Text = " Error reading the database.";
lblInfo.Text += err.Message; ;
}
finally
{
}
我想从我的表格中调用它,但它不起作用:
private void fillcomboBox()
{
selectStudent();
}
名称"选择学生"在当前上下文中不存在
我把它放在表格的顶部:
public partial class GUI : Form, College_System.HelperClass
我错过了什么吗?
附言。为什么cmbTable
和lblInfo
由于其保护级别而无法访问?谢谢。
此代码有多个问题。
- 您
有一个类和一个实例方法,并且您直接调用该方法。您应该创建类的实例并调用该方法。
检查类定义和调用是否位于同一命名空间中。如果没有,则应将类定义为内部/公共,并在调用代码页中包含命名空间。
除非标签是在同一类(帮助程序)中定义的,否则无法访问标签
通常,帮助程序类是独立的类,您可以在其中将数据传递给其方法并获取结果进行处理。例如,您可以尝试以下操作:
class myForm : Form
{
protected void OnClick()
{
try
{
var data = Helper.SelectStudent();
cmbTable.Items.AddRange(data);
}
catch (Exception ex)
{
lblInfo.Text = " Error reading the database.";
lblInfo.Text += err.Message; ;
}
}
}
class HelperClass
{
public static List<string> SelectStudent()
{
List<string> data = new List<string>();
MySqlConnection conn; // connection object;
string connstring = "server=localhost;user Id=root;database=collegesystem;Convert Zero Datetime=True ";
conn = new MySqlConnection(connstring);
conn.Open();
MySqlCommand myCommand = new MySqlCommand("SELECT * FROM person", conn);
MySqlDataReader myReader;
myReader = myCommand.ExecuteReader();
cmbTable.Items.Clear();
while (myReader.Read())
{
data.Add(myReader["personID"] + " | " + myReader["firstName"] + " | " + myReader["lastName"] + " | " + myReader["address"] + " | " + myReader["phoneNumber"] + " | " + myReader["postCode"] + " | " + myReader["dateOfBirth"]);
}
return data;
}
}
默认情况下,该属性是私有的。如果您想在遗传类中使用,您可以选择:公共保护,约束,受保护的内部
在您的情况下,我建议公开
public class HelperClass : CollegeSystem.GUI
公共分部类 GUI:窗体、College_System.帮助程序类
你不能这么做。您的生产线
public partial class GUI : Form, College_System.HelperClass
应该是
public partial class GUI : Form
然后你可以像
College_System.HelperClass c = new College_System.HelperClass();
c.selectStudent();