C# 如何在文本框中显示字符串数组
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/15659409/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How do you display a string array in a text box
提问by James Archer
Hi I am new to C# and I having problems with my first windows form application.
嗨,我是 C# 新手,我的第一个 Windows 窗体应用程序有问题。
I have data coming in from serial port and have worked out a way of processing and storing the data into 3 different string arrays. What I cant work out is how to display the data in the arrays into their own individual text boxes, I would only want to display the data in the array pointed to by the current index position.
我有来自串行端口的数据,并且已经找到了一种处理数据并将其存储到 3 个不同字符串数组中的方法。我无法解决的是如何将数组中的数据显示到各自的文本框中,我只想显示当前索引位置指向的数组中的数据。
I have 3 text boxes in my windows forms design already they are named:
textBoxmag
, textBoxlat
and textBoxlon
I would like to display the variables string[] mag
, string[] lat
and string[] lon
in their corresponding text boxes.
我在我的Windows窗体设计3个文本框已经它们被命名为:
textBoxmag
,textBoxlat
和textBoxlon
我想显示的变量string[] mag
,string[] lat
并string[] lon
在其对应的文本框中。
Please help me guys I properly stuck with this even though it may seem simple to you more experienced C# programmers. Below is my code:
请帮助我正确地坚持这一点的人,即使对于更有经验的 C# 程序员来说这似乎很简单。下面是我的代码:
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 WindowsFormsApplication1
{
public partial class Form1 : Form
{
string RxString;// where the raw serial data is stored
string[] mag = new string[1000];//where magnetic data is stored
string[] lat = new string[1000];//where latidude data is stored
string[] lon = new string[1000];///where longitude data is stored
string ends = "\r\n";//end of data sentence identifier
string starts = "G";//start of data sentence identifier
int i; //index lat data
int j;//index lon data
int k;//index mag data
public Form1()
{
InitializeComponent();
}
private void buttonStart_Click(object sender, EventArgs e)
{
serialPort1.PortName = "COM5";//define sierial port in which PIC is connected to
serialPort1.BaudRate = 4800;//set baud rate to match PIC
serialPort1.Open();
if (serialPort1.IsOpen)//if the port is open you can press the start button
{
buttonStart.Enabled = false;//start button disbaled
buttonStop.Enabled = true;//stop button enabled
textBox1.ReadOnly = false;//allow writing in text box
}
}
private void buttondtop_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen)
{
serialPort1.Close();
buttonStart.Enabled = true;
buttonStop.Enabled = false;
textBox1.ReadOnly = true;
}
}
private void DisplayText(object sender, EventArgs e)
{
textBox1.AppendText(RxString);//add watever is in raw data string to what is already in text box
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)//activates when port is open and data in buffer
{
RxString = serialPort1.ReadExisting();//read raw data from serial port into string
this.Invoke(new EventHandler(DisplayText));//invoke allows it to call function diplay text
if (RxString.StartsWith(starts))//if the string starts with "G"
{
if ((RxString.Length > 36))//if there is aleast one string sentence
{
if (RxString.EndsWith(ends))// if the string ends with "\r\n" process the string
serialPort1.Close();//close serial port
lat[i] = RxString.Split(',')[0].Substring(4);// extract latitude store in string array
i++;//increment index of latitude data array
lon[j] = RxString.Split(',')[2];// extract longitude store in string array
j++;//increment index of longitude data array
mag[k] = RxString.Split(',')[3].Substring(7).Trim();// extract magnetic data store in string array
k++;//increment index of magnteric data array
RxString = null;//Reset raw data string
serialPort1.Open();//open serial port ready for new string sentence
}
}
else RxString = null;// if the raw data string sentence does not start with "G" reset the array
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (serialPort1.IsOpen) serialPort1.Close();
}
private void labellat_Click(object sender, EventArgs e)
{
}
private void label3_Click(object sender, EventArgs e)
{
}
}
}
采纳答案by Nolonar
You will need to convert your string[]
s into string
s. You can do this easily with the string.Join()
method:
您需要将string[]
s 转换为string
s。您可以使用以下string.Join()
方法轻松完成此操作:
string separator = ", ";
string[] mag = new string[] { "hello", "world" };
textBoxmag.Text = string.Join(separator, mag);
// textBoxmag.Text == "hello, world";
回答by Thierry
回答by s15199d
This will show the string arrays as commas separated values:
这会将字符串数组显示为逗号分隔值:
string strLat = String.Join(", ", lat);
string strLon = String.Join(", ", lon);
textBoxlat.Text = strLat;
textBoxlon.Text = strLon;