2013-02-26 83 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()需要一个字符串值,但你传递一个字符。