2014-01-10 101 views
3

通過使用下圖中所示的設置,我目前有一個console application。但是現在,我想打開多種形式與console所以我不知道如果我能以某種方式一Windows Forms Application如何在VB中打開控制檯

Here is the Project's settings

+0

您無法在」Windows窗體應用程序「類型中打開控制檯 – SomeNickName

+0

實際上您可以,它需要額外的編程,但可以完成 – tinstaafl

+0

@tinstaafl您能分享這個額外的編程或鏈接到一個解決方案。謝謝 – user2874682

回答

4

@tinstaafl您可以分享這個額外的編程或鏈接到一個 解決方案。由於

這裏有幾個環節:

Console and WinForm together for easy debugging

Console Enhancements

這裏的第一個轉換。你需要一個表格有一個複選框名爲「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 

每當你點擊你顯示覆選框或隱藏控制檯。您可以像任何控制檯應用程序一樣寫入和讀取。

+0

這些鏈接是偉大的,但有什麼對vb.net而不是C#,因爲否則我會需要將其轉換所有這可能需要一段時間。謝謝 – user2874682

+0

我添加一些代碼。 – tinstaafl

+0

這是偉大的和作品不過是有辦法檢查控制檯使用控制檯終止,因爲目前如果關閉停止我的整個程序 – user2874682

1

表單中打開多個窗體或打開console和控制檯應用程序有很大的不同。通常來說,一個流程需要是一個表單或控制檯應用程序。表單應用程序是通過消息泵實現的,控制檯應用程序是命令行驅動器。有可能在控制檯內運行表單,反之亦然,但通常不推薦。如果你真的需要兩個,我會強烈鼓勵你使用兩個過程。

如果你能詳細闡述一下你的用例,我們可能會更好地幫助你。

0

所以這很酷。在設計器中,只需使用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 System.Runtime.InteropServices 
0

添加Imports語句並且當您關閉控制檯時,該操作不會終止您的Windows程序,那麼您可以添加這兩行代碼:

Dim myProcess As Process

myProcess = Process.Start(「cmd。exe「)

相關問題