2014-01-10 5 views
3

В настоящее время у меня есть console application, используя настройку, показанную на рисунке ниже. Однако сейчас я хочу открыть несколько форм с console, так что я задаюсь вопросом, могу ли я каким-то образом открыть несколько форм или открыть console в пределах Windows Forms ApplicationКак открыть консоль в VB

Here is the Project's settings

+0

Вы не можете открыть консоль в виде приложения Windows Forms. – 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 

Everytime вы установите флажок вы показать или скрыть консоль. Вы можете писать и читать с помощью любого консольного приложения.

+0

Эти ссылки отличные, но есть что-нибудь для vb.net вместо C#, потому что в противном случае мне нужно будет преобразовать все, что может занять некоторое время. Спасибо – user2874682

+0

Я добавил код. – tinstaafl

+0

это замечательно и работает, однако, есть ли способ проверить, завершена ли консоль с помощью консоли, потому что в настоящее время, если она закрыта, она останавливает мою всю программу. – user2874682

1

форм и консольные приложения очень разные. Настолько, что вообще говоря, процесс должен быть формальным или консольным приложением. Приложения форм реализованы с помощью насоса сообщений, а консольные приложения - командной строки. В какой-то степени можно запустить форму в консоли, и наоборот, но в целом не рекомендуется. Если вам действительно нужно обоим, я бы настоятельно рекомендовал вам использовать 2 процесса.

Если вы могли бы подробнее рассказать о своем случае использования, мы сможем помочь вам.

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 

При запуске ваша программа окон и установите флажок, чтобы она автоматически открывала окно и открывала его, пока вы не снимите флажок.

Добавить этот класс в нижней части программы:

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 
0

Если вы хотите, чтобы открыть окно консоли, чтобы взаимодействовать с и когда вы закроете консоль, это действие не завершит вашу программу Windows, тогда вы можете добавить эти две строки кода:

Dim myProcess As Process

myProcess = Process.Start ("cmd.exe ")

Смежные вопросы