【问题标题】:c# - Is there a way to make a fixed (height/width) console?c# - 有没有办法制作一个固定(高度/宽度)的控制台?
【发布时间】:2015-11-10 18:55:25
【问题描述】:

我一直在 microsoft visual studio 2013 中搞乱,我制作了一个控制台应用程序,但我想知道是否有办法为其制作固定大小(高度/宽度),这意味着它不能调整大小?如果有人知道这是否可能,如果您能帮助我,我将不胜感激。谢谢!

【问题讨论】:

  • answer 中有一个奇怪的 hack,基本上我们在 WinForm 中放置了一个控制台。由于锁定 WinForm 很简单,也许它可以满足您的需求。

标签: c# console height width fixed


【解决方案1】:

为了达到这个效果,需要用到一些C++类库:

const int MF_BYCOMMAND = 0x00000000;
const int SC_MINIMIZE = 0xF020;
const int SC_MAXIMIZE = 0xF030;
const int SC_SIZE = 0xF000;

[DllImport("user32.dll")]
public static extern int DeleteMenu(IntPtr hMenu, int nPosition, int wFlags);

[DllImport("user32.dll")]
private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);

[DllImport("kernel32.dll", ExactSpelling = true)]
private static extern IntPtr GetConsoleWindow();

static void Main(string[] args)
{
    Console.WindowHeight = 25;
    Console.WindowWidth = 80;

    DeleteMenu(GetSystemMenu(GetConsoleWindow(), false), SC_MINIMIZE, MF_BYCOMMAND);
    DeleteMenu(GetSystemMenu(GetConsoleWindow(), false), SC_MAXIMIZE, MF_BYCOMMAND);
    DeleteMenu(GetSystemMenu(GetConsoleWindow(), false), SC_SIZE, MF_BYCOMMAND);

    Console.WriteLine("Yes, its fixed!");
    Console.ReadLine();
}

希望这是有用的。

【讨论】:

【解决方案2】:

这是一个绝对可怕的解决方案,但是您可以在整个代码中调用“检查大小”方法来检查 Console.WindowHeight 和 Console.WindowWidth 并在它们不相等时重置它们,它不会阻止人们调整大小,但会至少保持你想要的大小。

编辑:我发布我认为是一个可怕的解决方案的原因是因为据我所知,没有内置功能允许你尝试做的事情,我给你一个解决方法。

private void CheckAndResetWindowSize(){
    if(Console.WindowHeight != 300 || Console.WindowWidth != 500) {
        Console.SetWindowSize(500, 300);
    }
}

【讨论】:

    【解决方案3】:

    Console.SetWindowSize 会成为你的朋友。

    【讨论】:

    • 这并不能解决问题,不是吗?人们仍然可以调整它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-16
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多