当取消选中选中的框时,我想删除该项目。问题是检查/取消检查似乎是在调用 ItemCheck 方法之后发生的。因此,当我删除一个弄乱 e.Index 的项目时,它会在我删除的项目之后检查/取消选中该项目,或者如果它是最后一个项目,则会抛出错误。
我发现了这个:Getting the ListView ItemCheck to stop! 其中有重置 e.NewValue 的提示,该部分可以正常工作,但当我删除最后一项时,它仍然会引发错误。
我没有简单地使用其中一个鼠标事件的原因是我希望键盘导航仍然可以以防万一。
这是我现在的代码。
private void checked_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (e.NewValue == CheckState.Unchecked)
{
checked.Items.RemoveAt(e.Index);
e.NewValue = CheckState.Checked;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助
如何将我的对象集合绑定到具有IsChecked属性的 CheckedListBox 项目?
这是我的对象:
public class Person
{
public int Id {get;set;}
public string Name {get;set;}
public bool IsChecked {get;set;}
}
public class EditorModel
{
public BindingList<Person> People {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
这些对象也都实现了INotifyPropertyChanged。
我可以像这样进行绑定:
checkedListBox.DataSource = editorViewModel.People;
checkedListBox.ValueMember = "Id";
checkedListBox.DisplayMember = "Name";
Run Code Online (Sandbox Code Playgroud)
如何绑定第三个属性IsChecked?我尝试用谷歌搜索,但没有找到任何解决方案。
我使用以下MouseMove事件处理程序将文本文件内容显示为CheckedListBox上的工具提示,并且有一个标记到每个checkedListBoxItem的文本文件对象.
private void checkedListBox1_MouseMove(object sender, MouseEventArgs e)
{
int itemIndex = checkedListBox1.IndexFromPoint(new Point(e.X, e.Y));
if (itemIndex >= 0)
{
if (checkedListBox1.Items[itemIndex] != null)
{
TextFile tf = (TextFile)checkedListBox1.Items[itemIndex];
string subString = tf.JavaCode.Substring(0, 350);
toolTip1.ToolTipTitle = tf.FileInfo.FullName;
toolTip1.SetToolTip(checkedListBox1, subString + "\n... ... ...");
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,我的应用程序因为checkedListBox上频繁的鼠标移动而变慢.
作为替代方案,我想,我应该使用MouseHover事件及其处理程序.但我找不到我的musePointer目前在哪个checkedListBoxItem.像这样:
private void checkedListBox1_MouseHover(object sender, EventArgs e)
{
if (sender != null)
{
CheckedListBox chk = (CheckedListBox)sender;
int index = chk.SelectedIndex;
if (chk != null)
{
TextFile tf = (TextFile)chk.SelectedItem; …Run Code Online (Sandbox Code Playgroud) 我应该用什么呢?我已经尝试过DataBindings.Add,但我的数据没有加载我有3个属性的数据结构:ID,Name和eg Description.我想将整个数据加载到列表中,但只显示Name属性.通常我会将DisplayMember用于此目的,但我在这里找不到它.
我从数据库中获取checkedListBox值.根据我的复选框选择它将执行一些操作.我必须编写已检查项目的代码.
我正在使用 ItemCheckEventArgs 并且可以从中获取索引值,但是从该值中我不确定如何查找所检查的文本的内容。
我在Java SWT中找不到CheckedListBox.请指出一种扩展List到支持复选框的方法.
鉴于我以CheckedListBox这种方式添加了一个项目:
checkedListBox1.Items.Add("ItemA");
Run Code Online (Sandbox Code Playgroud)
让我们说这是控件中唯一的项目:
string s = checkedListBox1.GetItemText(0);
Run Code Online (Sandbox Code Playgroud)
现在s的价值是"0"我期待的"ItemA".为什么我不能使用checkedListBox1.GetItemText(int itemIndex)方法获得正确的值?
在我用 C# 编写的 Windows 窗体项目中,我尝试在检查最后一个项目后清除 CheckedListBox。
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
if (checkedListBox1.CheckedItems.Count + 1 == checkedListBox1.Items.Count)
{
checkedListBox1.Items.Clear();
}
}
Run Code Online (Sandbox Code Playgroud)
在此示例中,在我检查最后一项后,程序将抛出 NullReferenceException。
有人可以解释为什么会发生这种情况以及我该如何处理吗?
提前致谢!
我有一个 CheckedListBox 和一个文本框。这里的目标是创建一个可搜索的 CheckedListBox。当我在 TextBox 中输入内容时,我必须过滤 CheckedListBox 中的项目。我编写了下面的代码来执行此操作,但是每次输入文本时,CheckedListBox 项目都会被清除,并且会出现新的过滤项目列表。这段代码的问题是过滤工作正常,但检查的项目每次都会被重置。
public partial class Form1 : Form
{
string[] elArray = {"Not Applicable" , "Aberdeen - Delivered" , "Belfast - Delivered" , "Birmingham - Delivered" , "Bournemouth - Delivered" , "Bradford - Delivered" , "Bristol - Delivered" , "Cambridge - Delivered" , "Canterbury - Delivered" , "OTHERS TO DE ADDED ..."};
public Form1()
{
InitializeComponent();
foreach (string elData in elArray)
{
resultBoxList.Items.Add(elData);
}
}
private void searchBox_TextChanged(object sender, EventArgs e)
{
resultBoxList.Items.Clear(); …Run Code Online (Sandbox Code Playgroud) checkedlistbox ×10
winforms ×8
c# ×6
.net ×3
binding ×1
checkbox ×1
checkboxlist ×1
java ×1
mousehover ×1
mousemove ×1
swt ×1