user32 AnimateWindow Функция не сдвигает правильную форму - PullRequest
1 голос
/ 22 февраля 2012

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

Пользователь вводит диапазон IP-адресов. Приложение выполняет весь пинг и отображает результаты в новой форме (динамически).

Вот как я хочу, чтобы это работало: если пользователь запускает эхо-запрос один раз, ничего не произойдет в отношении анимации слайдов. Но если пользователь щелкнет элемент управления «Повторить» в форме результатов, новое окно результатов выдвинется справа от старой формы результатов.

В форме результатов (Named: Ping_Form) я добавил следующее в событие загрузки:

[DllImport("user32")]
    static extern bool AnimateWindow(IntPtr hwnd, int time, int flags);
    //Constants
    const int AW_SLIDE = 0X40000;
    const int AW_HOR_POSITIVE = 0X1;
    const int AW_HOR_NEGATIVE = 0X2;
    const int AW_BLEND = 0X80000;


 void ping_Form_Load(object sender, EventArgs e) 
        {
        bool is_Open = false;

        FormCollection fc = Application.OpenForms;
        foreach (Form f in fc)
            {
            if (f.Name == "PSE")
                is_Open = true;
            }
        if (is_Open == false)
            return;
        //Load the Form At Position of Main Form
        int WidthOfMain = Application.OpenForms["PSE"].Width;
        int HeightofMain = Application.OpenForms["PSE"].Height;
        int LocationMainX = Application.OpenForms["PSE"].Location.X;
        int locationMainy = Application.OpenForms["PSE"].Location.Y;

        //Set the Location


        this.Location = new Point(LocationMainX + WidthOfMain, locationMainy + 10);

        //Animate form
        AnimateWindow(this.Handle, 500, AW_SLIDE | AW_HOR_POSITIVE);


        }

Но когда я запускаю метод ping, создается пустая форма, которая выдвигается, но форма результатов просто кажется нормальной.

Любой директор или совет был бы великолепен в этой области. Большое спасибо!

1 Ответ

0 голосов
/ 23 февраля 2012

Попробуйте вызвать это. Show ();после вашего звонка в AnimateWindow.

...