如何提升.NET控制台应用体验? (2)

使用它,开发人员可以在控制台应用中实现一些令人难以置信的效果。这个库是由Miguel De Icaza编写的,是控制台技术的巅峰之作,下面让我们一起来看一个实例程序。

using Terminal.Gui; class Demo { static void Main () { Application.Init (); var top = Application.Top; // 创建顶级窗体 var win = new Window ("MyApp") { X = 0, Y = 1, // 预留菜单行 // 使用Dim.Fill(), 它可以自动调整窗体大小,实现自适应,而无需手动敢于 Width = Dim.Fill (), Height = Dim.Fill () }; top.Add (win); // 创建一个菜单 var menu = new MenuBar (new MenuBarItem [] { new MenuBarItem ("_File", new MenuItem [] { new MenuItem ("_New", "Creates new file", NewFile), new MenuItem ("_Close", "", () => Close ()), new MenuItem ("_Quit", "", () => { if (Quit ()) top.Running = false; }) }), new MenuBarItem ("_Edit", new MenuItem [] { new MenuItem ("_Copy", "", null), new MenuItem ("C_ut", "", null), new MenuItem ("_Paste", "", null) }) }); top.Add (menu); var login = new Label ("Login: ") { X = 3, Y = 2 }; var password = new Label ("Password: ") { X = Pos.Left (login), Y = Pos.Top (login) + 1 }; var loginText = new TextField ("") { X = Pos.Right (password), Y = Pos.Top (login), Width = 40 }; var passText = new TextField ("") { Secret = true, X = Pos.Left (loginText), Y = Pos.Top (password), Width = Dim.Width (loginText) }; // 添加一些其他控件 win.Add ( // 这是我最喜欢的布局 login, password, loginText, passText, // 这里使用了绝对定位 new CheckBox (3, 6, "Remember me"), new RadioGroup (3, 8, new [] { "_Personal", "_Company" }), new Button (3, 14, "Ok"), new Button (10, 14, "Cancel"), new Label (3, 18, "Press F9 or ESC plus 9 to activate the menubar")); Application.Run (); } } 总结

作为开发人员,我们可以沉迷于GUI, 这是理所当然的,它使我们更有生产力。但是控制台应用程序同样也很强大。下次当你编写控制台程序的时候,你可以考虑使用以上介绍的某些库,以便为你的控制台应用增添色彩。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpdwfj.html