Возможно ли передать значение в обработчик события в windows forms?

Да, в C# в Windows Forms есть возможность передачи значений в обработчик события.

Обработчик события в Windows Forms представляет собой метод класса, который вызывается при возникновении определенного события. В общем случае обработчик события не принимает никаких аргументов. Однако, если вам нужно передать какое-либо значение в обработчик, есть несколько способов сделать это.

1. Использование свойств или полей класса:
Вы можете объявить свойство или поле в классе, которое будет хранить значение, которое вы хотите передать в обработчик события. Затем вы можете установить это значение в нужный момент, а в обработчике события обращаться к этому свойству или полю для доступа к переданному значению. Пример:

public class MyClass
{
    public string MyValue { get; set; }

    public void MyEventHandler(object sender, EventArgs e)
    {
        Console.WriteLine(MyValue);
    }
}

2. Использование анонимного метода или лямбда-выражения:
Вы можете определить анонимный метод или лямбда-выражение непосредственно в месте привязки обработчика события. Внутри этого анонимного метода или лямбда-выражения вы можете использовать любые значения, доступные в этой области видимости. Пример:

var myValue = "Hello, World!";
button.Click += (sender, e) =>
{
    Console.WriteLine(myValue);
};

3. Использование лямбда-ссылки:
Если вы используете C# 7 или более новую версию, вы можете использовать лямбда-ссылку для передачи значения в обработчик события. Лямбда-ссылка позволяет ссылаться на локальные переменные или поля из внешней области видимости. Пример:

var myValue = "Hello, World!";
button.Click += (sender, e) => MyEventHandler(myValue);

public void MyEventHandler(string value)
{
    Console.WriteLine(value);
}

Это только несколько способов передачи значений в обработчик события в Windows Forms при использовании C#. В целом, в C# есть множество способов передачи значений, и выбор конкретного способа зависит от ваших потребностей и предпочтений.