无法从字符转换为字符串

时间:2013-02-26 07:56:04

标签: c# .net string winforms messagebox

我想要弹出一个消息框,显示用户通过文本框接受的字符串的第一个字符,当用户点击消息框的ok按钮时,消息框中会弹出下一个字符,直到达到null。 / p>

我创建了这个程序,但由于显而易见的原因,它给出了以下错误: “无法从'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]);
            }
        }
    }
}

3 个答案:

答案 0 :(得分: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中的字符数组。它们实际上是以空值终止的,但您不能通过使用其索引(等于Length)来访问空字符。 CLR检查索引,并且因为它超出了字符串(0Length-1)的有效索引范围,会引发异常。

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

用这个替换你的行:

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

MessageBox.Show()需要字符串值,但您传递的是字符。