4

テキストボックスを介してユーザーから受け入れられた文字列の最初の文字を表示するメッセージボックスがポップアップ表示され、ユーザーがメッセージボックスの [OK] ボタンをクリックすると、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ます。.NETの文字列は のような文字配列ではありませんC。これらは実際には null で終了しますが、そのインデックス ( に等しいLength) を使用して null 文字にアクセスすることはできません。CLR はインデックスをチェックし、文字列 ( 0Length-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 に答える