Я пытаюсь добавить слайд окна к одной из моих подчиненных форм. Я дам краткое изложение того, что эта маленькая часть делает в моем приложении.
Пользователь вводит диапазон 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, создается пустая форма, которая выдвигается, но форма результатов просто кажется нормальной.
Любой директор или совет был бы великолепен в этой области. Большое спасибо!