加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Console.SetWindowPosition – >居中(每次)

发布时间:2020-12-15 06:32:54 所属栏目:百科 来源:网络整理
导读:我正在尝试将通过我的C-sharp代码执行的控制台窗口设置为每次生成代码时都居中. 我希望这是有道理的. 解决方法 这需要P / Invoke. Project Add Reference,选择System.Drawing.再次为System. Windows.Forms.在项目中添加一个新类并粘贴此代码: using System;
我正在尝试将通过我的C-sharp代码执行的控制台窗口设置为每次生成代码时都居中.

我希望这是有道理的.

解决方法

这需要P / Invoke. Project Add Reference,选择System.Drawing.再次为System. Windows.Forms.在项目中添加一个新类并粘贴此代码:
using System;
using System.ComponentModel;
using System.Drawing;           // NOTE: Project + Add Reference required
using System.Windows.Forms;     // NOTE: Project + Add Reference required
using System.Runtime.InteropServices;

public static class ConsoleUtils {

    public static void CenterConsole() {
        IntPtr hWin = GetConsoleWindow();
        RECT rc;
        GetWindowRect(hWin,out rc);
        Screen scr = Screen.FromPoint(new Point(rc.left,rc.top));
        int x = scr.WorkingArea.Left + (scr.WorkingArea.Width - (rc.right - rc.left)) / 2;
        int y = scr.WorkingArea.Top + (scr.WorkingArea.Height - (rc.bottom - rc.top)) / 2;
        MoveWindow(hWin,x,y,rc.right - rc.left,rc.bottom - rc.top,false);
    }

    // P/Invoke declarations
    private struct RECT { public int left,top,right,bottom; }
    [DllImport("kernel32.dll",SetLastError = true)]
    private static extern IntPtr GetConsoleWindow();
    [DllImport("user32.dll",SetLastError = true)]
    private static extern bool GetWindowRect(IntPtr hWnd,out RECT rc);
    [DllImport("user32.dll",SetLastError = true)]
    private static extern bool MoveWindow(IntPtr hWnd,int x,int y,int w,int h,bool repaint);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读