我有windows窗體上的datagridviews,我將記錄添加到datagridview使用小的添加對話框,我希望他們動畫中,當用戶按下他們的按鈕被加載。我使用當動畫窗口窗體滑入時,窗體出現在錯誤的位置
[DllImport("user32")]
static extern bool AnimateWindow(IntPtr hwnd, int time, int flags);
對話框設置動畫中,但在屏幕的左上角。我使用的添加對話框的Load事件belowcode:
//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的任何正式的方式。 ...
您能否更具體地瞭解「在錯誤的位置」。它是太高還是太低,左邊還是右邊,或者是隨機的。它應該在哪裏? – ChrisF
我已更新問題「屏幕左上角」 – PUG
您提供的數字是否與父窗口相關?也許只要拿掉'LocationMainX'和'locationMainy'? – ChrisF