Объект не содержит определения тега и нет доступной ошибки метода расширения

#c# #linklabel

Вопрос:

Я пытаюсь показать некоторые данные из моей таблицы, нажав на метку ссылки, но когда я запускаю приложение, у меня возникает ошибка, например : Объект не содержит определения тега и нет доступной ошибки метода расширения

Строка ошибки : int AppID = (метка ссылки)отправитель.Метка;

Код вы, пожалуйста, помогите мне исправить эту ошибку или, если у вас есть другая идея, чтобы получить идентификатор

Вот мой код :

    private void ShowAppointmentDetail(object sender, EventArgs e)
    {
        int appID = (LinkLabel)sender.Tag;

        SqlCommand sql = new SqlCommand("select * from RDV whereID_RDV = {appID}");

        DataTable dt = new DataTable();
        SqlDataAdapter sda = new SqlDataAdapter(sql);
        sda.Fill(dt);

        if (dt.Rows.Count > 0)
        {
            DataRow row = dt.Rows[0];
            {
                frmManageAppointment withBlock = new frmManageAppointment();
                withBlock.Nom.Text = row["Nom"].ToString();
                withBlock.Prénom.Text = row["Prénom"].ToString();
                withBlock.NUM.Text = row["Num"].ToString();
                withBlock.date.Text = row["DateRDV"].ToString();
                withBlock.ShowDialog();
            }
            DisplayCurrentDate();
        }
    }
 

Спасибо

Комментарии:

1. во-первых , Tag свойство является an object , и вы не можете получить его непосредственно в an int , оно нуждается (int) в приведении или int.Parse т. Д. Во — вторых, событие, которое вы используете, не предназначено для нажатия linklabel , поэтому sender не содержит никаких linklabel атрибутов. вы можете создать переменную, чтобы переносить appID ее . почему вы используете Tag ?!

2. var t = (отправитель как ссылка).Тег; затем вы можете преобразовать значение тега (объект) в целое число, если оно не равно нулю

3. Первая строка должна гласить (синтаксис сопоставления шаблонов C#8): if (sender is not LinkLabel lili || lili.Tag is not int appID) return;

4. int appID = (LinkLabel)sender.Tag; -> int appID = (int)((LinkLabel)sender).Tag;

5. Спасибо за ваш отзыв — @Steve да, это правильно, это решает мою проблему … Огромное спасибо!

Ответ №1:

      private void ShowAppointmentDetail(object sender, EventArgs e)
        {
        Was :  int appID = (LinkLabel)sender.Tag;
        Answer :  var appID = (sender as LinkLabel).Tag;


    SqlCommand sql = new SqlCommand("select * from RDV whereID_RDV = {appID}");

    DataTable dt = new DataTable();
    SqlDataAdapter sda = new SqlDataAdapter(sql);
    sda.Fill(dt);

    if (dt.Rows.Count > 0)
    {
        DataRow row = dt.Rows[0];
        {
            frmManageAppointment withBlock = new frmManageAppointment();
            withBlock.Nom.Text = row["Nom"].ToString();
            withBlock.Prénom.Text = row["Prénom"].ToString();
            withBlock.NUM.Text = row["Num"].ToString();
            withBlock.date.Text = row["DateRDV"].ToString();
            withBlock.ShowDialog();
        }
        DisplayCurrentDate();
    }
}