【问题标题】: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);
}
}