自定义控件的数据绑定不起作用?
Databindings for custom control wont work?
我无法理解为什么我的数据绑定似乎不适用于我的自定义 class。我制作(破解)了我的 class 扩展控件 class 以添加数据绑定功能,但它实际上并没有绑定到我的自定义 属性.
我的自定义代码 class 是:
public class RadioButtonSet : System.Windows.Forms.Control
{
private Dictionary<System.Windows.Forms.RadioButton, int> buttonList;
private int selectedValue;
public RadioButtonSet()
{
buttonList = new Dictionary<System.Windows.Forms.RadioButton, int>();
}
public void AddButton(System.Windows.Forms.RadioButton button, int buttonValue)
{
if (this.buttonList.ContainsKey(button))
throw new Exception("Button set already contains specified button");
else if (buttonValue <= 0)
throw new Exception("Cannot add specified key to button set");
else if (button == null)
throw new Exception("Parameter button cannot be null");
else
{
button.CheckedChanged += button_CheckedChanged;
this.buttonList.Add(button, buttonValue);
}
}
private void setSelectedButton()
{
this.buttonList.FirstOrDefault(x => x.Value == this.selectedValue).Key.Checked = true;
}
private void button_CheckedChanged(object sender, EventArgs e)
{
System.Windows.Forms.RadioButton btn = sender as System.Windows.Forms.RadioButton;
this.selectedValue = this.buttonList[btn];
}
public int SelectedButton
{
get
{
return selectedValue;
}
set
{
selectedValue = value;
setSelectedButton();
}
}
}
然后我尝试使用以下方法绑定到此 class,其中 rbs_admin 是我的自定义实例 class:
rbs_admin.DataBindings.Add("SelectedButton", 数据表, "admin");
我不知道哪些信息可能有帮助,所以这里是。
我从数据适配器填充的数据表中获取要绑定的信息。这个自定义 class 不在它自己的文件中,它是我项目中另一个静态 class 的一部分。
我只是不明白,因为我创建了一个具有相同自定义 属性 的自定义文本框,它绑定并且工作正常。
非常感谢任何帮助。
我说的是这样的事情:
someListControl.DataSource = datatable;
someListControl.DisplayMember = "someAnotherColumnName"
rbs_admin.DataBindings.Add("SelectedButton", datatable, "admin");
然后,从列表控件中选择一个项目将使您的控件根据所选项目更新其绑定。
我无法理解为什么我的数据绑定似乎不适用于我的自定义 class。我制作(破解)了我的 class 扩展控件 class 以添加数据绑定功能,但它实际上并没有绑定到我的自定义 属性.
我的自定义代码 class 是:
public class RadioButtonSet : System.Windows.Forms.Control
{
private Dictionary<System.Windows.Forms.RadioButton, int> buttonList;
private int selectedValue;
public RadioButtonSet()
{
buttonList = new Dictionary<System.Windows.Forms.RadioButton, int>();
}
public void AddButton(System.Windows.Forms.RadioButton button, int buttonValue)
{
if (this.buttonList.ContainsKey(button))
throw new Exception("Button set already contains specified button");
else if (buttonValue <= 0)
throw new Exception("Cannot add specified key to button set");
else if (button == null)
throw new Exception("Parameter button cannot be null");
else
{
button.CheckedChanged += button_CheckedChanged;
this.buttonList.Add(button, buttonValue);
}
}
private void setSelectedButton()
{
this.buttonList.FirstOrDefault(x => x.Value == this.selectedValue).Key.Checked = true;
}
private void button_CheckedChanged(object sender, EventArgs e)
{
System.Windows.Forms.RadioButton btn = sender as System.Windows.Forms.RadioButton;
this.selectedValue = this.buttonList[btn];
}
public int SelectedButton
{
get
{
return selectedValue;
}
set
{
selectedValue = value;
setSelectedButton();
}
}
}
然后我尝试使用以下方法绑定到此 class,其中 rbs_admin 是我的自定义实例 class:
rbs_admin.DataBindings.Add("SelectedButton", 数据表, "admin");
我不知道哪些信息可能有帮助,所以这里是。
我从数据适配器填充的数据表中获取要绑定的信息。这个自定义 class 不在它自己的文件中,它是我项目中另一个静态 class 的一部分。
我只是不明白,因为我创建了一个具有相同自定义 属性 的自定义文本框,它绑定并且工作正常。
非常感谢任何帮助。
我说的是这样的事情:
someListControl.DataSource = datatable;
someListControl.DisplayMember = "someAnotherColumnName"
rbs_admin.DataBindings.Add("SelectedButton", datatable, "admin");
然后,从列表控件中选择一个项目将使您的控件根据所选项目更新其绑定。