4

我希望弹出一个消息框,显示用户通过文本框接受的字符串的第一个字符,当用户单击消息框的确定按钮时,下一个字符会在消息框中弹出,直到达到 null。

我创建了这个程序,但由于明显的原因,它给出了以下错误:“无法从'char'转换为'string'”请提出一些更改。

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]);
            }
        }
    }
}
4

3 回答 3

4

用这个:

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

MessageBox.Show()需要一个string参数,因此需要将字符转换为字符串。

你的循环:

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

引发IndexOutOfRangeException. in 的字符串.NET不是像 in 那样的字符数组C。它们实际上是以空字符结尾的,但您不能使用空字符的索引(等于Length)来访问空字符。CLR 检查索引,因为它超出了字符串 ( 0to Length-1) 的有效索引范围,所以抛出异常。

于 2013-02-26T07:58:08.160 回答
2

MessageBox.Show()接收一个字符串,并且您正在传递一个char对象。请执行下列操作:

MessageBox.Show(str[i].ToString());
于 2013-02-26T07:58:10.807 回答
0

用这个替换你的行:

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

需要一个字符串值,MessageBox.Show()但您正在传递一个字符。

于 2013-02-26T07:59:30.143 回答