C# Environment.NewLine 不在 Windows 表单列表框中添加一行
Posted
技术标签:
【中文标题】C# Environment.NewLine 不在 Windows 表单列表框中添加一行【英文标题】:C# Environment.NewLine doesn't add a line in windows form listbox 【发布时间】:2022-01-14 14:17:16 【问题描述】:我创建了一个在列表框中显示一些信息的 Windows 窗体。 首先,我创建了具有 5 个属性的 UserInfo 类:
public class RegUnregUser
public string Company get; set;
public string Email get; set;
public string Role get; set;
public object ID get; set;
public string RegistrationStatus get; set;
以及一个返回这些属性的 FullInfo:
public string FullInfo
get
return
$"Company: Company" +
"\r\n" +
$"Email: Email" +
Environment.NewLine +
$"Role: Role Environment.NewLine ID: Id Environment.NewLine" +
$"RegistrationStatus: RegistrationStatus";
如您所见,我尝试了所有可能的组合,但结果总是:
Company: companytest1Email: emailtest1 ..
我该怎么做才能像这样显示这些信息:
Company: companytest1
Email: emailtest1
..
Form1 中的代码。有一个用户搜索电子邮件的文本框,当他们单击搜索按钮时,数据库上有一个查询,该查询在表中搜索此电子邮件并返回结果。我知道这是一个简单的 sql 注入,但我将是唯一使用此代码的人
public partial class Dashboard : Form
List<RegUnregUser> regUnregUsers = new List<RegUnregUser>();
public Dashboard()
InitializeComponent();
RegUnregUsersListBox.DataSource = regUnregUsers;
RegUnregUsersListBox.DisplayMember = "FullInfo";
private void RegUnregSearchButton_Click(object sender, EventArgs e)
DataAccess db = new DataAccess();
regUnregUsers = db.GetRegUnregUsers(EmailTextBox.Text);
RegUnregUsersListBox.DataSource = regUnregUsers;
RegUnregUsersListBox.DisplayMember = "FullInfo";
提前感谢您的帮助
【问题讨论】:
这能回答你的问题吗? How to put a \n(new line) inside a list box? 你能显示将你的项目绑定到列表框项目源的代码吗? 我刚刚编辑了我的问题并添加了表单代码(仪表板) 现在我希望一切都清楚了 目前还不清楚总体目标是什么。但是,ListBox
包含列表格式的“项目”,因此“每一”行是一个 (1) 项目。很明显ListBox
本身是“忽略”或删除换行符。如果您必须为ListBox
中的每个属性设置此新行,那么您需要将RegUnregUser
的每个属性设置为ListBox
中的“单个项目”,我敢打赌这不会起作用,因为每个人RegUnregUser
对象将被拆分为列表框中的多个“项目”。您是否考虑过使用其他控件?
【参考方案1】:
我该怎么做才能像这样显示这些信息
简单的答案?你不能*
列表框的设计不是为每个项目包含多行文本,而且看起来您希望查询返回多个用户,因此建议副本中的建议(在我看来)相当糟糕,因为它们本质上是在列表框中创建多个项目,每行一个文本。如果您返回了 50 个用户和 5 个属性,那么它就是一个 250 个项目的列表框。非常原始:/
考虑改用 DataGridView:
public partial class Dashboard : Form
public Dashboard()
InitializeComponent();
private void RegUnregSearchButton_Click(object sender, EventArgs e)
DataAccess db = new DataAccess();
RegUnregUsersListBox.DataSource = db.GetRegUnregUsers(EmailTextBox.Text);
当然,您需要接受 RegUnregUser 的属性在每列中分布一个,但我保证,这样会更好:)
* can't 当然,难以置信地不可能是绝对真理。我敢肯定,如果你想花几个小时写一个你自己画的东西,你会管理它
【讨论】:
以上是关于C# Environment.NewLine 不在 Windows 表单列表框中添加一行的主要内容,如果未能解决你的问题,请参考以下文章
RichTextBox_logs.AppendText(Environment.NewLine);返回两条新线?
是否有理由在iOS或Android移动设备的XF代码中使用Environment.NewLine而不是 n?