baketharlay Ответов: 1

Как найти управление в форме MDI chlid при наведении курсора мыши на событие ?


У меня есть десять последовательностей кнопок в дочерней форме MDI . Когда я перемещаю cusor с одной кнопки на другую , я хочу найти текущий cusor под управлением кнопки в дочерней форме MDI . Я использую этот метод
form.PointToClient(point)
но не нашел кнопки управления
как я могу это сделать ? я не могу найти контроль, потому что это ребенок MDI . Главное-это нормально .

Что я уже пробовал:

main-это нормально ,но я не могу в дочерней форме Mdi.

j snooze

почему бы вам не использовать событие mousehover? Если вам нужно связаться с основной формой, создайте общедоступное свойство в дочерней форме и при наведении курсора мыши для каждой кнопки установите свойство на кнопку, над которой вы навели курсор.

1 Ответов

Рейтинг:
1

Cristina Carrasco Angulo

Я сделал вам пример с событием mouseHover (Visual studio 2013 c#):
- Форма MDIParent
- Form1< - с несколькими кнопками


[Пример Gif]

[MDI_ChildButtonMouseHover]

Создайте открытый метод DoSomeThing в MDI

public void DoSomething(string controlName) {
    try
    {
        //MessageBox.Show("Mouse HOVER :" + controlName);
        toolStripStatusLabel.Text = controlName;
    }
    catch (Exception ex)
    {
        throw new Exception(ex.ToString());
    }

}


Назвать ребенка:
private void openChildFormToolStripMenuItem_Click(object sender, EventArgs e)
{
    try
    {
        var child = new Form1();
        child.MdiParent = this; //Asign this form as parent
        child.Show();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
}



Событие наведения мыши на ребенка:
private void button1_MouseHover(object sender, EventArgs e)
{
    try
    {
        /*
         * There is a public method DoSomething in the MDIParent,
         * I send the control name to the method
         */
        ((MDIParent1)MdiParent).DoSomething("Form1 -" + ((Button)sender).Name);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
}