2015-05-01 2 views
0

Я создаю программу с двумя формами (регистр и просмотр). Форма представления будет читать одну запись из таблицы (базы данных), а затем вы можете отредактировать или удалить запись. Я создаю класс для этой программы, и для одного из конструкторов он получит идентификатор поиска, имя и фамилию из формы представления, а затем будет метод, который будет искать в таблице для записи (используя идентификатор поиска , OR firstname и lastname) и назначит переменные внутри класса, и я хочу использовать THOSE-переменные для своих методов редактирования и удаления, но проблема в том, что я пытаюсь создать общедоступный объект класса, который будет использоваться во всех мои события, используя ключевое слово «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(); 
      } 
     } 

    } 
+0

Просьба указать точную строку ошибки и точный текст ошибки. – juharr

+0

Покажите нам код, создающий экземпляр вашего объекта ASystem (тот, у которого есть «это» в нем) вместе с генерируемой ошибкой компиляции. –

ответ

0

вы можете создать свое собственное событие пути создания класса, который является производным от 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; 

для повышения событие, которое вы используете:

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- */ 
} 

Я надеюсь, что это то, что вы хотите.

Смежные вопросы