У меня есть таблицы данных в форме окна, я добавляю записи в таблицу данных с помощью небольших диалоговых окон добавления, я хочу, чтобы они анимировались, когда пользователь нажимает кнопку, на которой они загружены. Я использую
[DllImport("user32")]
static extern bool AnimateWindow(IntPtr hwnd, int time, int flags);
Источник: http://www.c -sharpcorner.com / UploadFile / kirtan007 / 761 /
Диалоги оживляются, но в левом верхнем углу экрана. Я использую нижеприведенный код в событии Load диалога добавления:
//Set the Location negative values are being returned when my dialog appears
this.Location = new Point(LocationMainX + WidthOfMain, locationMainy + 10);
//Animate form
AnimateWindow(this.Handle, 750, AW_SLIDE | AW_HOR_POSITIVE);
В родительской форме я передаю свое местоположение дочерней форме.
AddForm form = new AddForm (this.DesktopLocation)
form.ShowDialog(); //I have also noticed doing form.Show(); messes with the position of dialog
Моя основная форма загружается в другую форму, поэтому я предполагаю, что она возвращает относительное местоположение. Но я попробовал:
AddForm form = new AddForm (this.Parent.DesktopLocation)
form.ShowDialog();
это не возвращает отрицательных значений, но возвращает (0,24), что также неверно. как диалоговое окно анимирует около 150 пикселей над родительской формой.
когда я устанавливаю форму также относительно this.Parent.Parent.Location, тогда все выглядит правильно, , поэтому я предполагаю, что существует какой-либо формальный способ доступа к корневому родительскому элементу приложения, вместо того, чтобы делать this.parent .parent .....