C# 如何创建单个对象并在不同事件中使用值?
我正在创建一个包含两个表单(register和view)的程序。 视图窗体将从表(数据库)中读取一条记录,然后您可以编辑或删除该记录。我正在为这个程序创建一个类,对于其中一个构造函数,它将从视图表单中获取搜索ID、名字和姓氏,然后有一个方法将在表中搜索记录(使用搜索ID或姓氏和姓氏),并在类中分配变量,我想在我的编辑和删除方法中使用这些变量,但问题是,当我试图创建一个类的公共对象,该对象将在我所有的事件中使用,使用“this”关键字,它表示在当前上下文中不存在,但每当我在每个事件中创建一个对象时,它都会识别“this”关键字,但是我不能使用从搜索方法分配的类变量。这是我的构造函数和类的搜索方法C# 如何创建单个对象并在不同事件中使用值?,c#,C#,我正在创建一个包含两个表单(register和view)的程序。 视图窗体将从表(数据库)中读取一条记录,然后您可以编辑或删除该记录。我正在为这个程序创建一个类,对于其中一个构造函数,它将从视图表单中获取搜索ID、名字和姓氏,然后有一个方法将在表中搜索记录(使用搜索ID或姓氏和姓氏),并在类中分配变量,我想在我的编辑和删除方法中使用这些变量,但问题是,当我试图创建一个类的公共对象,该对象将在我所有的事件中使用,使用“this”关键字,它表示在当前上下文中不存在,但每当我在每个事件中创建一个对象时
public ASystem(searchSHD search)
{
searchHID = search.searchHID;
search_FName = search.searchFName;
search_LName = search.searchLName;
}
public String searchHID;
public String search_FName;
public String search_LName;
public String HID;
public String First_Name;
public String Full_Name;
public String query;
public String Last_Name;
public String PhoneNum;
public String Country;
public String DOB;
public String Experience;
public void Search()
{
using (OleDbConnection db_connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\KAZEM\Documents\Hairsalon\employees.accdb;
Persist Security Info=False;"))
{
if (searchHID == "")
{
query = "SELECT * FROM Hairdresser where First_Name = @FName AND Last_Name = @LName";
}
else
{
query = "SELECT * FROM Hairdresser where HID = @HID";
}
using (OleDbCommand db_command = new OleDbCommand(query, db_connection))
{
db_command.Parameters.Add("@HID", searchHID);
db_command.Parameters.Add("@FName", search_FName);
db_command.Parameters.Add("@LName", search_LName);
db_connection.Open();
OleDbDataReader reader = db_command.ExecuteReader();
reader.Read();
HID = reader.GetValue(0).ToString();
First_Name = reader.GetString(1);
Last_Name = reader.GetString(2);
Full_Name = First_Name + " " + Last_Name;
Country = reader.GetString(4);
PhoneNum = reader.GetString(5);
DOB = (Convert.ToDateTime(reader.GetValue(3))).ToString();
Experience = reader.GetValue(6).ToString();
}
}
}
您可以通过创建由EventArgs派生的类来创建自己的事件,如:
class yourEventArgs:EventArgs
{
public yourEventArgs(object yourValues)
{
Value = yourValues;
}
//Create your properties like below
public object Value { get; set; }
}
之后,您需要创建一个eventhandler:
public event EventHandler<yourEventArgs> YourEventName;
然后可以通过(引发事件时应执行的代码)将方法添加到eventhandler中
我希望这就是您想要的。请指出发生错误的确切行和错误的确切文本。向我们展示创建系统对象实例(其中包含“this”的对象)的代码,以及生成的编译错误。
if(YourEventName!=null)
{YourEventName(this,new yourEventArgs(yourValue));}
YourEventName+=((object o,yourEventArgs e)=> {/*-Insert Code here-*/});
//or
YourEventName+=on_yourEvent;
private void on_yourEvent(object o,yourEventArgs e)
{
/*-Insert your Code here- */
}