c# ссылка на метку из другого метода - PullRequest
0 голосов
/ 23 марта 2020

Я хочу, чтобы мышь оставляла видимое изменение состояния равным false, но я получаю следующее сообщение об ошибке: Ошибка CS7036 Не указан аргумент, соответствующий необходимому формальному параметру 'e' из 'Form1.Repair_MouseLeave (object, EventArgs, Label ) «Как мне это исправить?

    private void Repair_MouseHover(object sender, EventArgs e)
    {
        Label RepairText = new Label();
        RepairText = new Label();
        RepairText.Location = new Point(161, 12);
        RepairText.Text = "This what the program will do";
        this.Controls.Add(RepairText);
        RepairText.AutoSize = true;
        Repair_MouseLeave(RepairText);

    }

    private void Repair_MouseLeave(object sender, EventArgs e,Label repairtext)
    {
    repairtext.Visible = false;

    }

1 Ответ

1 голос
/ 23 марта 2020

Прежде всего, нам нужно установить наши обработчики событий для методов MouseHover и MouseLeave для элемента управления Repair. Я предполагаю, что вы знаете, как это сделать. Тем не менее, привязка к событиям контроля Восстановления может быть достигнута с помощью окна Свойства формы в режиме разработки. Установите обработчики событий как MouseHover и MouseLeave.

Насколько я вижу, вы пытаетесь отобразить метку с некоторым текстом, когда мышь наводит курсор на этот элемент управления Repair и хотите скрыть его когда мышь покидает его. Но вы справляетесь с этим неправильно. Прежде всего, вызов MouseLeave изнутри MouseHover немедленно скрыл бы вашу новую метку, и она вообще не отображалась бы.

И ваша подпись метода для Repair_MouseLeave также неверна. Стандартный обработчик событий принимает два параметра: (object sender, EventArgs e)

Реализуйте ваши обработчики событий, как показано ниже, с новой меткой repairText в качестве члена экземпляра вашего класса:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private Label repairText;

    private void Repair_MouseHover(object sender, EventArgs e)
    {
        if(repairText == null)
        {
            repairText = new Label();
            repairText.Location = new Point(161, 12);
            repairText.Text = "This what the program will do";
            repairText.AutoSize = true;
            this.Controls.Add(repairText);
        }
        repairText.Visible = true;
    }

    private void Repair_MouseLeave(object sender, EventArgs e)
    {
        if(repairText != null)
        {
            repairText.Visible = false;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...