【发布时间】:2014-09-24 21:05:52
【问题描述】:
感谢您查看我的问题。我有一个名为UIChoice 的对象
namespace uitest
{
public class UIChoice
{
public String name {get; set;}
public Button yes { get; set; }
}
}
然后我有一个Form1 和一个DataGridView(我称之为grdChoice)就像这样
namespace uitest
{
public class Form1 : Form
{
public BindingList<UIChoice> Choices = new BindingList<UIChoice>();
public Form1 ()
{
InitializeComponent();
DataGridViewTextBoxColumn colName = new DataGridViewTextBoxColumn();
colName.HeaderText = "Name:";
colName.Name = "yestext";
colName.DataPropertyName = "name";
grdChoice.Columns.Add(colName);
DataGridViewButtonColumn colYes = new DataGridViewButtonColumn();
colYes.HeaderText = "Yes:";
colYes.Name = "yesbutton";
colYes.DataPropertyName = "yes";
colYes.FlatStyle = FlatStyle.Popup;
grdChoice.Columns.Add(colYes);
grdChoice.DataSource = Choices;
grdChoice.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
grdChoice.Show();
FillData();
}
private void FillData()
{
UIChoice myChoice = new UIChoice();
Button Yes = new Button();
Yes.Click += ((sender, args) =>
{
MessageBox.Show("try this yes works");
});
Yes.Text = "yes";
myChoice.name = "try this";
myChoice.yes = Yes;
Choices.Add(myChoice);
UIChoice myChoiceA = new UIChoice();
Button YesA = new Button();
YesA.Click += ((sender, args) =>
{
MessageBox.Show("try A yes works");
});
YesA.Text = "yes";
myChoiceA.name = "try A";
myChoiceA.yes = YesA;
Choices.Add(myChoiceA);
}
}
}
应该发生的事情(在我的想象中)是DataGridView 应该注意到它是一个DataGridViewButtonColumn 并注意到它已被赋予一个按钮并使用它。但事实并非如此。对我来说问题是这是一个替换代码。在现实生活中,UIChoice 对象被大量方法强化,而DataGridView(最初)只是为了替换水平递增按钮的手摇面板(变得太“庞大”),可悲的部分就像我写的那样它这个DataGridView 不起作用,即当我构造一个 BindingList 对象时,它似乎没有“注意到”或“关心”我给它一个按钮.. 我如何让DataGridView 关心我已经发给它需要的Buttons?
【问题讨论】:
标签: c# winforms button datagridview datagridviewbuttoncolumn