C# ListBox选中项填充TextBox时int转string赋值实现方法
问题场景
本地文件夹存储有JSON文件 Shawn Milke.json,文件内容如下:
{ "FirstName": "Shawn", "LastName": "Milke", "Email": "shawn.milke@alesana.com", "TeamName": "Shawn Milke", "Password": "shawn123", "IsActive": "Yes", "UserId": 100 }
实现从JSON文件读取数据填充ListBox控件的代码:
private void ShowListViewNew() { List<UserAccount> userAccounts = new List<UserAccount>(); var dir = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); var outputDir = Path.Combine(dir, "Output"); foreach (var file in Directory.GetFiles(outputDir, "*.json")) { var text = File.ReadAllText(file); var model = JsonConvert.DeserializeObject<UserAccount>(text); userAccounts.Add(model); } listBoxUsers.DataSource = userAccounts; }
选中ListBox项后填充对应文本框控件的代码:
private void listBoxUsers_SelectedIndexChanged(object sender, EventArgs e) { var model = (UserAccount)listBoxUsers.SelectedItem; txtFirstName.Text = model.FirstName; txtLastName.Text = model.LastName; txtEmail.Text = model.Email; txtTeamName.Text = model.TeamName; txtPassword.Text = model.Password; if (model.IsActive== "Yes") { chkIsActive.Checked = true; } else { chkIsActive.Checked = false; } txtUserId.Text = model.UserId; }
核心问题:txtUserId.Text = model.UserId; 行需要将int类型的UserId值转换为字符串类型才能完成赋值,已知int.Parse()可以实现字符串转int,需要int转字符串赋值给文本框的正确实现方式。
解决方案
C#中所有基础类型都自带ToString()方法,直接调用即可把int类型值转为对应的字符串,修改报错行代码为:
txtUserId.Text = model.UserId.ToString();
如果使用C# 6及以上版本,也可以用字符串插值写法实现同样效果:
txtUserId.Text = $"{model.UserId}";
两种写法都能满足赋值要求,其中ToString()是兼容性最高、最通用的写法。
另外可以顺便简化IsActive的判断逻辑,不需要写完整if-else块,直接用布尔表达式赋值即可:
chkIsActive.Checked = model.IsActive == "Yes";
内容的提问来源于stack exchange,提问作者steamboy naratsu
相关产品推荐
相关产品推荐

