我想要弹出一个消息框,显示用户通过文本框接受的字符串的第一个字符,当用户点击消息框的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]);
}
}
}
}
答案 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检查索引,并且因为它超出了字符串(0
到Length-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()
需要字符串值,但您传递的是字符。