这看似简单无论出于何种原因都行不通。特别是Foreach循环给我这个错误“错误1无法将类型'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.Threading.Tasks;
using System.Windows.Forms;
namespace A_HtmlEditor
{
public partial class Form1 : Form
{
AutoCompleteStringCollection data = new AutoCompleteStringCollection();
public Form1()
{
InitializeComponent();
}
// The error occurs in the foreach loop below
private void textBox1_TextChanged(object sender, EventArgs e)
{
webBrowser1.DocumentText = textBox1.Text;
foreach(string s in textBox1.Text)
{
data.Add(s);
}
}
}
}
暂且不说 当我在这里的时候,我很想知道你们中是否有人知道是否有可能找出是否有按钮点击,例如关机按钮?或者,如果不可能,有办法知道计算机何时即将关闭。
我再一次感激,谢谢。
答案 0 :(得分:7)
textBox1.Text
是一个字符串(不是字符串集合)。所以当你这样做时:
foreach (string s in textBox1.Text)
{
data.Add(s);
}
它正在尝试将字符串视为集合。这实际上有效,因为string
实际上是char
的数组。问题是,当您声明char
时,您正尝试将每个string
转换为string s
。
如果您确实要将每个字符添加到data
,那么您可以将每个char
转换为string
:
// This takes each character from textBox1.Text,
// converts it to a string, and adds it to data
foreach (char chr in textBox1.Text)
{
data.Add(chr.ToString());
}
或者,如果您的textBox1
是多行文字框,并且您尝试将每行添加到data
,则可以将NewLine
字符上的文字拆分为获取字符串列表,并添加如下:
// This takes each line from a multi-line text box and adds it to data
foreach (string line in textBox1.Text.Split(new[] { '\n' }))
{
data.Add(line);
}
答案 1 :(得分:2)
您尝试做的事情是遍历文本框的行。 TextBox对象的Text属性是数据类型String。
如果我是正确的,为了做到这一点,你可以做如下的事情:
var lines = textbox.Text.Split((new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
foreach (var s in lines)
{
data.Add(s);
}
因为Text属性是单个字符串对象。您需要将字符串拆分为某种分隔符上的较小字符串的集合,例如换行符。 (例如''\ n')
答案 2 :(得分:1)
字符串包含字符而非字符串,请更改为以下内容
foreach(char s in textBox1.Text) //should be renamed to c as char
答案 3 :(得分:0)
首先,如果你想在字符串中迭代字符,你可以使用
foreach (var s in textBox1.Text)
{
data.Add(s.ToString());
}
如果你想从字符串中获取字符数组,你可以使用
textBox1.Text.ToCharArray()
您可以在此处找到用于检测电源关闭的答案 How to detect Windows shutdown or logoff
答案 4 :(得分:0)
另一个解决方案是:
string[] textBox1.text = webBrowser1.DocumentText
foreach (string s in textBox1.Text)
{
data.Add(s);
}
通过这样做,它们将被视为单独的str而不是char
答案 5 :(得分:-1)
如果在特定位置获得子串,则使用此
for (int i = 0; i < s.Length; i++)
{
Console.WriteLine(s[i]); // or other works
}