C# передает делегатов в разные формыC#

Место общения программистов C#
Anonymous
C# передает делегатов в разные формы

Сообщение Anonymous »



У меня есть приложение WinForms, состоящее из нескольких форм.

Я пытаюсь передать обработчик событий из второй формы в третью, но я не могу этого добиться. Я получаю ошибку приведения, которую не могу понять, как ее преодолеть.
Я был бы признателен за помощь:
код + дальнейшее объяснение ниже:

Это грубое изображение того, что должно произойти:

Изображение


Form1 может создавать несколько форм (она также содержит методы, которые я хочу передать) - которые я может успешно пройти создание подформы.

проблема начинается, когда я создаю форму3 из формы2: я пытаюсь передать обработчик событий, но получаю ошибку CS0029/CS0030 (ошибки приведения)
что я делаю неправильно и как это исправить?
РЕДАКТИРОВАТЬ:
что должно произойти? -- Форма3 должна управлять (отправлять данные обратно) элементу управления графическим интерфейсом, размещенному в Форме1.
Код:

Форма1:

Код: Выделить всё

    public delegate void sendMessageToConsoleDelegate(string value);
public sendMessageToConsoleDelegate sendMessageToConsoleCallback;

public delegate void SetPlaceHolderDelegate(TextBox tb);
public SetPlaceHolderDelegate SetPlaceHolderCallback;

private void SetPlaceHolder(TextBox tb)
{
if (!tb.InvokeRequired)
{
if (!tb.Focused)
{
if (string.IsNullOrWhiteSpace(tb.Text))
tb.Text = tb.Tag.ToString();
return;
}
if (tb.Text == tb.Tag.ToString())
tb.Text = "";
return;
}
SetPlaceHolderDelegate call = new SetPlaceHolderDelegate(SetPlaceHolder);
tb.BeginInvoke(call, tb);
}

private void SendMessageToConsole(string msg)
{
if (!textBoxConsole.InvokeRequired)
{
textBoxConsole.AppendText(msg);
return;
}
sendMessageToConsoleDelegate call = new sendMessageToConsoleDelegate(SendMessageToConsole);
textBoxConsole.BeginInvoke(call, msg);
}

private void AddNewDeviceForm()
{
frmAddDevice add_device = new frmAddDevice(devicesDBPath);
add_device.sendMessageToConsole += SendMessageToConsole;
add_device.Show();
}

private void StartEdit()
{
frmEditDBs editdb = new frmEditDBs(devicesDBPath, commandsDBPath);
editdb.sendMessageToConsole += SendMessageToConsole;
editdb.SetPlaceHolder += SetPlaceHolder;
editdb.Show();
}
Form2 (frmEditDBs)

Код: Выделить всё

    public delegate void EventHandler_sendMessageToConsole(string msg);
public event EventHandler_sendMessageToConsole sendMessageToConsole = delegate { };

public delegate void EventHandler_SetPlaceHolder(TextBox tb);
public event EventHandler_SetPlaceHolder SetPlaceHolder = delegate { };

private void EditDevice()
{
frmAddDevice edit_device = new frmAddDevice(devicesDBpath, current_device);
edit_device.sendMessageToConsole += sendMessageToConsole; ****

Подробнее здесь: [url]https://stackoverflow.com/questions/72446615/c-sharp-pass-delegates-to-different-forms[/url]

Вернуться в «C#»