C# 如何创建单个对象并在不同事件中使用值?

C# 如何创建单个对象并在不同事件中使用值?,c#,C#,我正在创建一个包含两个表单(register和view)的程序。 视图窗体将从表(数据库)中读取一条记录,然后您可以编辑或删除该记录。我正在为这个程序创建一个类,对于其中一个构造函数,它将从视图表单中获取搜索ID、名字和姓氏,然后有一个方法将在表中搜索记录(使用搜索ID或姓氏和姓氏),并在类中分配变量,我想在我的编辑和删除方法中使用这些变量,但问题是,当我试图创建一个类的公共对象,该对象将在我所有的事件中使用,使用“this”关键字,它表示在当前上下文中不存在,但每当我在每个事件中创建一个对象时

我正在创建一个包含两个表单(register和view)的程序。 视图窗体将从表(数据库)中读取一条记录,然后您可以编辑或删除该记录。我正在为这个程序创建一个类,对于其中一个构造函数,它将从视图表单中获取搜索ID、名字和姓氏,然后有一个方法将在表中搜索记录(使用搜索ID或姓氏和姓氏),并在类中分配变量,我想在我的编辑和删除方法中使用这些变量,但问题是,当我试图创建一个类的公共对象,该对象将在我所有的事件中使用,使用“this”关键字,它表示在当前上下文中不存在,但每当我在每个事件中创建一个对象时,它都会识别“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- */
}