2013-02-26 49 views
4

我想要一個消息框彈出顯示從用戶接受的字符串的第一個字符通過文本框,當用戶單擊消息框的確定按鈕時,下一個字符彈出消息直到達到空。無法從字符轉換爲字符串

我已經創建了這個程序,但由於顯而易見的原因,它給出了以下錯誤: 「無法從'字符'轉換爲'字符串'」 請提出一些更改。

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace loop_Message 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void submit_Click(object sender, EventArgs e) 
     { 
      string str; 
      str = stringTxt.Text; 
      for (int i = 0; str[i] != null; i++) 
      { 
       MessageBox.Show(str[i]); 
      } 
     } 
    } 
} 
+2

Consder讀取C#和C++之間的區別 - 其中一種語言有0個終止字符串,另一個沒有。 – 2013-02-26 07:59:24

+0

試試這個MessageBox.Show(str [i] .ToString()); – 2013-02-26 08:02:18

回答

4

使用此:

foreach (char c in stringTxt.Text) 
{ 
    MessageBox.Show(c.ToString()); 
} 

MessageBox.Show()需要string參數,所以你需要的字符轉換爲字符串。

您的循環:

for (int i = 0; str[i] != null; i++) 

引發IndexOutOfRangeException.NET中的字符串不是像C那樣的字符數組。它們實際上是以null結尾的,但不能通過使用其索引(等於Length)來訪問空字符。 CLR檢查索引,並且由於它超出了字符串(0Length-1)的有效索引範圍,將引發異常。

+0

謝謝!這一個絕對完美! – 2013-02-26 08:12:10

2

MessageBox.Show()收到一個字符串,並傳遞一個char對象。執行以下操作:

MessageBox.Show(str[i].ToString()); 
+0

已經嘗試過 – 2013-02-26 08:04:52

+0

它給出了這個錯誤:無法從'方法組'轉換爲'字符串' – 2013-02-26 08:05:33

+1

'stringTxt'究竟是什麼?請提供完整的源代碼。 – 2013-02-26 08:06:17

0

這個替換您行:

for (int i = 0; str[i] != null; i++) 
{ 
    MessageBox.Show(str[i].ToString()); 
} 

MessageBox.Show()需要一個字符串值,但你傳遞一個字符。

相關問題