【发布时间】:2015-11-03 16:49:39
【问题描述】:
我在尝试让 CheckedListBox 记住检查的项目时遇到问题。在这个程序中,我将 DataTable 中的项目加载到 CheckedListBox 它第一次工作,但在指定过滤器后,CheckedListBox 忘记了所有检查的项目。
那么问题来了,在get应用后如何让它记住勾选的项目呢?
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 AppNumber302
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
DataTable dt = new DataTable();
private void Form1_Load(object sender, EventArgs e)
{
dt.Columns.Add("id");
dt.Columns.Add("name");
dt.Columns.Add("checked");
dt.Rows.Add(10, "azer1", true);
dt.Rows.Add(10, "azer2", true);
dt.Rows.Add(10, "azer3", false);
dt.Rows.Add(10, "azer4", false);
checkedListBox1.DataSource = dt;
checkedListBox1.DisplayMember = "name";
checkedListBox1.ValueMember = "id";
PerformCheck();
}
private void PerformCheck()
{
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow drv = dt.Rows[i];
bool stat = bool.Parse(drv[2].ToString());
checkedListBox1.SetItemChecked(i, stat);
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
try
{
DataRow[] dr = dt.Select("name LIKE '%" + textBox1.Text + "%'");
DataTable tmp = dr.CopyToDataTable();
checkedListBox1.DataSource = tmp;
checkedListBox1.ValueMember = "id";
checkedListBox1.DisplayMember = "name";
}
catch
{
checkedListBox1.DataSource = new DataTable();
}
}
}
}
【问题讨论】:
标签: c# .net checkedlistbox listboxitems