2012-12-10 129 views
-7

下面的代碼在Windows窗體應用程序中工作正常,但我需要在控制檯中運行它。如何將此Winforms應用程序轉換爲控制檯應用程序?

namespace TelnetApp 
{ 
    public partial class TelnetForm : Form 
    { 
     public TelnetForm() 
     { 
      InitializeComponent(); 
     } 

     private Socket clientSocket; 

     IPAddress hostAddress; 
     public void telnetSocketAsyncEventArgs_Completed(object sender, SocketAsyncEventArgs e) 
     {  
      try 
      {  
       if (e.SocketError == SocketError.Success) 
       { 

        if (e.LastOperation == SocketAsyncOperation.Connect) 
        {  
         MessageBox.Show("Service Is Running", hostAddress.ToString(), 
          MessageBoxButtons.OK, MessageBoxIcon.Information);  
        }  
       }  
       else 
       {  
        MessageBox.Show("Service Is not Running", e.SocketError.ToString(), 
         MessageBoxButtons.OK, MessageBoxIcon.Error); 

       }  
      } 

      catch (SocketException ex) 
      {  
       MessageBox.Show(ex.Message, "Service Is not Running",  
        MessageBoxButtons.OK, MessageBoxIcon.Error);  
      } 
     } 

     private void TelnetButton_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       if (string.IsNullOrEmpty(IPTextBox.Text)) 
        return; 
       if (string.IsNullOrEmpty(PortTextBox.Text))  
        return; 
       int port;  
       hostAddress = IPAddress.Parse(IPTextBox.Text); 
       int.TryParse(PortTextBox.Text, out port); 
       clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
       SocketAsyncEventArgs telnetSocketAsyncEventArgs = new SocketAsyncEventArgs(); 
       telnetSocketAsyncEventArgs.RemoteEndPoint = new IPEndPoint(hostAddress,port); 
       telnetSocketAsyncEventArgs.Completed += new 
       EventHandler<SocketAsyncEventArgs>(telnetSocketAsyncEventArgs_Completed); 
       clientSocket.ConnectAsync(telnetSocketAsyncEventArgs); 

      }  
      catch (SocketException ex) 
      {  
       MessageBox.Show(ex.Message, "Service Is not Running",  
        MessageBoxButtons.OK, MessageBoxIcon.Error); 

      }  
      finally 
      { 

      }     
      }  
     } 
    } 
+3

StackOverflow不是代碼寫入服務。請閱讀[提問一個好問題的指南](http://tinyurl.com/so-hints)並顯示[你嘗試過的](http://whatyouhavetried.com)。 –

+1

'項目/屬性/應用程序/輸出類型< - 控制檯應用程序# –

回答

2

創建一個新的控制檯應用程序項目,將代碼複製到其中,並將按鈕單擊事件中的代碼放入主方法中。您可能需要更改其他方法簽名以包含static

刪除對MessageBox的呼叫並將其替換爲對Console.WriteLine的呼叫。此外,由於您沒有供用戶輸入數據的文本框,因此您需要解析命令行參數,這很容易,因爲它們以static void Main(string[] args)中的數組形式出現。

然後,啓動調試器並檢查是否有問題。

+1

你正在嘗試這個http://stackoverflow.com/badges/95/reversal不是你;) –

+0

:-D不知道這存在 - 無論如何,你可以幫助;-) –

+0

完成並完成;) –

1

只需將代碼複製到控制檯應用程序中,並添加對System.Windows.Forms的引用,並將using System.Windows.Forms;添加到您使用的指令中以保留消息框。

如果您不想使用消息框,請改爲使用Console.WriteLine

相關問題