我目前使用下图中所示的设置console application
。但是现在我想用console
打开多个表单,所以我想知道我是否可以以某种方式打开多个表单或在console
Windows Forms Application
答案 0 :(得分:8)
@tinstaafl你可以分享这个额外的节目或链接到 解。感谢
以下是几个链接:
Console and WinForm together for easy debugging
这是第一个转换。您需要一个复选框名称为“CheckBox1”的表单:
Imports System.Runtime.InteropServices
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
If CheckBox1.Checked Then
Win32.AllocConsole()
Console.WriteLine("Done!")
Else
Win32.FreeConsole()
End If
End Sub
End Class
Public Class Win32
<DllImport("kernel32.dll")> Public Shared Function AllocConsole() As Boolean
End Function
<DllImport("kernel32.dll")> Public Shared Function FreeConsole() As Boolean
End Function
End Class
每次单击您显示的复选框或隐藏控制台。您可以像任何控制台应用程序一样写入和读取。
答案 1 :(得分:1)
表单和控制台应用程序非常不同。因此,一般来说,进程要么是表单应用程序,要么是控制台应用程序。表单应用程序使用消息泵实现,控制台应用程序是命令行驱动器。可以在一定程度上在控制台中运行表单,反之亦然,但通常不推荐。如果你真的需要两者,我强烈建议你使用2个过程。
如果你能详细说明你的用例,我们可能会更好地帮助你。
答案 2 :(得分:1)
所以这很酷。在设计器中,只需使用Toolbox常用控件添加一个复选框。
然后双击新的“CheckBox1”,这将自动插入此子例程:
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
End Sub
然后您需要做的就是添加以下代码:
If CheckBox1.Checked Then
Win32.AllocConsole()
Console.WriteLine("Done!")
Else
Win32.FreeConsole()
End If
当您运行Windows窗体程序并选中该框时,它将自动打开窗口并保持打开状态,直到您取消选中该框。
将此课程添加到您的课程底部:
Public Class Win32
<DllImport("kernel32.dll")> Public Shared Function AllocConsole() As Boolean
End Function
<DllImport("kernel32.dll")> Public Shared Function FreeConsole() As Boolean
End Function
End Class
请务必在顶部添加Imports语句
Imports System.Runtime.InteropServices
答案 3 :(得分:1)
如果你想打开一个控制台窗口进行交互,当你关闭控制台时,该操作不会终止你的windows程序,那么你可以添加这两行代码:
将myProcess Dim As Process
myProcess = Process.Start(“cmd.exe”)