C# Combox selecteditem添加额外字母

C# Combox selecteditem添加额外字母,c#,winforms,C#,Winforms,我是C语言的新手,试图了解事物是如何工作的。所以我创造了两种形式。第一个有一个文本框,第二个有一个带有按钮的组合框,该按钮向该计算机发送“提供帮助”。我从文本框中添加计算机名。单击“确定”按钮后,它会将我的所有计算机名加载到组合框中 string[] computerlist = txtComputers.Text.Split(new[]{'\n'}, StringSplitOptions.RemoveEmptyEntries); frmHome _frmhome = new frmHome(

我是C语言的新手,试图了解事物是如何工作的。所以我创造了两种形式。第一个有一个文本框,第二个有一个带有按钮的组合框,该按钮向该计算机发送“提供帮助”。我从文本框中添加计算机名。单击“确定”按钮后,它会将我的所有计算机名加载到组合框中

string[] computerlist = txtComputers.Text.Split(new[]{'\n'}, StringSplitOptions.RemoveEmptyEntries); 
frmHome _frmhome = new frmHome();
_frmhome.cbComputerList.Items.AddRange(computerlist);
_frmhome.ShowDialog();
_frmhome.Dispose();
当我从dropbox中选择一台计算机并单击“提供帮助”按钮时,会出现“提供远程”窗口,显示它试图连接到用户,但随后失败

private void Offerhelp_Click(object sender, EventArgs e)
 {
    CompName = cbComputerList.SelectedItem.ToString();
    var _offerhelp = new ProcessStartInfo();
    _offerhelp.FileName = "msra.exe";
    _offerhelp.Arguments = String.Format("/offerRA" + " " + CompName);
    Process.Start(_offerhelp);
  }
我尝试在调试模式下运行,发现CompName变量

"/offerRA Lab1\r"
如果我删除\r,它实际上可以工作

谁能告诉我为什么会这样?另外,是否有一种方法可以为所选项目创建一个新类,并使其成为全局变量,这样我就可以使用它,比如说,如果我创建4-5个表单,并在所有表单中使用该计算机名称

提前谢谢

你的线路

string[] computerlist = txtComputers.Text.Split(new[]{'\n'}, StringSplitOptions.RemoveEmptyEntries);
这就是问题所在\n是换行符,\r是回车符。根据操作系统/程序,您可以使用\r\n确定“换行符”

使用

将返回正确的字符

编辑:根据您的评论,在表单中添加一个静态属性:

class MyForm
{
    public static string SelectedComputer { get; set;}
}
然后,您可以通过

MyForm.SelectedComputer

在cbComputerList上设置此变量。SelectedIndexChanged事件。只需检查以确保该值大于0,然后设置它。

如果您反向工作并检查computerlist[0]包含的内容。它是否仍然包含\r?这不是组合框问题。检查计算机列表变量。您可能需要将Split与Environment.NewLine一起使用,\n而不是使用Tank。这很好用。有没有办法使所选计算机成为全局变量,这样我就可以在每个窗体中使用它?您可以在某些窗体上将其设置为静态字段并引用它,但为什么不在主窗体上设置正则属性,然后将对主窗体的引用传递给其他窗体呢。通常,您试图远离静态属性,但如果这是您想要的,那么它应该是好的。或者更好的方法是,在主窗体上作为引用的模型,然后只传递该模型而不是整个窗体,然后发布一个带有static的示例。如果我要帮助其他两种方法,我就得看看你的结构。
MyForm.SelectedComputer