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

时间:2015-05-01 16:53:46

标签: c#

我正在创建一个包含两种形式(注册和视图)的程序。 视图表单将从表(数据库)中读取单个记录,然后您可以编辑或删除记录。我正在为这个程序创建一个类,对于其中一个构造函数,它将从视图表单中获取搜索ID,名字和姓氏,然后有一个方法将在表中搜索记录(使用搜索ID) ,或者名字和姓氏)并将在类中分配变量,我想将THOSE变量用于我的编辑和删除方法,但问题是当我尝试创建一个将在所有类中使用的类的公共对象时我的活动,使用'这个'关键字,它表示这并不存在于当前上下文中,但每当我在每个事件中创建一个对象时,它都会识别出这个'这个'关键字,但我无法使用从搜索方法分配的类变量。这是我的类

的构造函数和搜索方法
    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();
            }
        }

    }

1 个答案:

答案 0 :(得分:0)

您可以通过创建一个派生自EventArgs的类来创建自己的事件,例如:

    class yourEventArgs:EventArgs
{
    public yourEventArgs(object yourValues)
    {
        Value = yourValues;
    }
    //Create your properties like below
    public object Value { get; set; }
}

之后你需要创建一个事件处理程序:

public event EventHandler<yourEventArgs> YourEventName;

用于举起您使用的活动:

if(YourEventName!=null)
{YourEventName(this,new yourEventArgs(yourValue));}

然后你可以通过(在你举起活动时应该执行的代码)向你的eventhandler添加你的方法。

YourEventName+=((object o,yourEventArgs e)=> {/*-Insert Code here-*/});
//or
YourEventName+=on_yourEvent;
private void on_yourEvent(object o,yourEventArgs e)
{
/*-Insert your Code here- */
}

我希望你想要的是什么。