日期:2014-05-18  浏览次数:20762 次

关于datagridviewcolumn的重载,要实现一些功能?(顶者有分)
自己写了textbox的自定义控件;实现了按F3的时候,弹出一个供选择的窗口,选择,然后返回值赋值给textbox.text!

在datagridview的单元格内,我也想实现这样的功能!
搜索了几天,得出的结论是:用datagridviewcolumn重载!

我看了本坛前几天的关于一个datagridviewcolumn重载的例子!
但是还是没有做出来!

请高手指点!
最好给出示例!
谢谢!
顶者有分!


------解决方案--------------------
sf
------解决方案--------------------
datagridview的值不按数据库的写要使用CellFormatting这个事件~
if (MailListGridView.Columns[e.ColumnIndex].Name == "hasEnclo")
{
string hasEnclo = MailListGridView.Rows[e.RowIndex].Cells["hasEnclo"].Value.ToString();
if (int.Parse(hasEnclo) == 0)
{
e.Value = "";
}
else if (int.Parse(hasEnclo) == 1)
{
e.Value = "☆";
}
else
{
e.Value = e.Value + "☆";
}
}
比如hasEnclo在数据库是个数字,而通过这个可以把e.Value设成一个图片
------解决方案--------------------
这是CellFormatting事件private void MailListGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
里面的代码,通过对单元格的格式化,就可以任意改单元格的值了
------解决方案--------------------
up

------解决方案--------------------
顶。。。。。。
------解决方案--------------------

------解决方案--------------------
学习
------解决方案--------------------
不用这么麻烦,写一下EditingControlShowing事件就可以了
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

dataGridView1.Columns.Add("a", "a");
dataGridView1.Rows.Add(new object[] { 1 });

dataGridView1.EditingControlShowing +=new DataGridViewEditingControlShowingEventHandler(dataGridView1_EditingControlShowing);
}

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control is TextBox)
{
TextBox tb = (TextBox)e.Control;
tb.KeyUp += new KeyEventHandler(tb_KeyUp);
}
}

void tb_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.F3)
{
Form form = new Form();
form.ShowDialog();
}
}
}