c# - 有没有办法制作一个固定的(高度/宽度)控制台?

时间:2015-08-18 01:35:51

标签: c# console height width fixed

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

3 个答案:

答案 0 :(得分:3)

Console.SetWindowSize 将是你的朋友。

答案 1 :(得分:2)

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

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

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

答案 2 :(得分: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();
}

希望这很有用。