我找到了一個適用于行程的解決方案,但我想在移動MainWindow另一個視窗時移動它。
下面的解決方案適用于流程 ex。記事本并正確移動它,但是我將如何將其應用于MainWindow?
private Process AppToMove = Process.Start("notepad.exe");
private void Window_LocationChanged(object sender, EventArgs e)
{
if (AppToMove != null)
{
AppToMove.WaitForInputIdle();
}
var xx = Application.Current.MainWindow.Top;
var yy = Application.Current.MainWindow.Left;
var zz = Application.Current.MainWindow.Width;
var zzz = Application.Current.MainWindow.Height;
var answer = yy zz ((yy zz) * 0);
var answer2 = xx zzz ((xx zzz) * .0) - zzz;
int IntY = (int)answer;
int IntX = (int)answer2;
CustomMove(AppToMove, IntY, IntX, 375, 812);
}
public void CustomMove(Process process, int x, int y, int width, int height)
{
MoveWindow(process.MainWindowHandle, x, y, width, height, true);
}
//DLL call to make 'moveWindow' functional
[DllImport("user32.dll", SetLastError = true)]
private static extern bool MoveWindow(IntPtr hWnd, int x, int y, int width, int height, bool repaint);
MainWindow 可以顯示為
MainWindow MW = new MainWindow();
MW.Show();
但它怎么能從另一個視窗移動呢?
還是更簡單的創建一個二級專案,將兩者分開,編譯后從第二個專案中呼叫行程/exe檔案?
uj5u.com熱心網友回復:
將Process引數替換為Window引數并設定其屬性,而不是呼叫外部MoveWindow方法。
像這樣的事情,這MW是一個System.Windows.Window:
private void Window_LocationChanged(object sender, EventArgs e)
{
var xx = Application.Current.MainWindow.Top;
var yy = Application.Current.MainWindow.Left;
var zz = Application.Current.MainWindow.Width;
var zzz = Application.Current.MainWindow.Height;
var answer = yy zz ((yy zz) * 0);
var answer2 = xx zzz ((xx zzz) * .0) - zzz;
int IntY = (int)answer;
int IntX = (int)answer2;
CustomMove(MW, IntY, IntX, 375, 812);
}
public static void CustomMove(Window window, int x, int y, int width, int height)
{
window.Left = x;
window.Top = y;
window.Width = width;
window.Height = height;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/408096.html
標籤:
