请详细说明一下情况!
你那个comboboxColumn是系统有的,还是自己写的
你那个comboboxColumn是系统有的,还是自己写的
解决方案 »
- 请教个程序问题!!!在线等。
- sqlconnection 对象中参数pooling=false,是什么意思和作用呢?
- 请教WinCE下TreeView的问题
- 人事管理系统
- 最近在写 购物车但是碰到了个问题..希望大家帮下(相同的 题目-_-!)
- get 语句无法赋时间类型的值
- 谁有好点的。关于 C# 数据库编程方面的书?电子的 pdf 之类的最好。中文的最好。多谢了
- .net新手 一个简单的问题
- vs.net2003在vlk 版xp下安装运行时文件时,到最后就不动了?
- 如何计算两日期相差的小时数?
- 关于君行5000在vs2005下可以编译通过,但运行过程中出现不小的问题??谢谢关注!!
- 请问,.net2005中,如何加入namespace?
//设计一个继承自ComboBox的下拉框编辑列组件
public class DataGridViewComboBoxExEditingControl : ComboBox, IDataGridViewEditingControl
{
protected int rowIndex;
protected DataGridView dataGridView;
protected bool valueChanged = false; protected override void OnTextChanged(System.EventArgs e)
{
base.OnTextChanged(e);
NotifyDataGridViewOfValueChange(); } private void NotifyDataGridViewOfValueChange()
{
valueChanged = true;
dataGridView.NotifyCurrentCellDirty(true);
}
protected override void OnSelectedIndexChanged(EventArgs e)
{
base.OnTextChanged(e);
NotifyDataGridViewOfValueChange();
} public Cursor EditingPanelCursor
{
get { return Cursors.IBeam; }
} public DataGridView EditingControlDataGridView
{
get { return dataGridView; }
set { dataGridView = value; }
} public object EditingControlFormattedValue
{
set
{
Text = value.ToString();
NotifyDataGridViewOfValueChange();
}
get
{
return this.Text;
} } public virtual object GetEditingControlFormattedValue(DataGridViewDataErrorContexts context)
{
return Text; } public bool EditingControlWantsInputKey(Keys key, bool dataGridViewWantsInputKey)
{ switch (key & Keys.KeyCode)
{
case Keys.Left:
case Keys.Up:
case Keys.Down:
case Keys.Right:
case Keys.Home:
case Keys.End:
case Keys.Escape:
case Keys.Enter:
case Keys.PageDown:
case Keys.PageUp:
return true;
default:
return false;
}
} public void PrepareEditingControlForEdit(bool selectAll)
{
if (selectAll)
{
SelectAll();
}
else
{
this.SelectionStart = this.ToString().Length;
}
}
public virtual bool RepositionEditingControlOnValueChange
{
get
{
return false;
}
} public int EditingControlRowIndex
{
get { return this.rowIndex; }
set { this.rowIndex = value; }
} public void ApplyCellStyleToEditingControl(DataGridViewCellStyle dataGridViewCellStyle)
{
this.Font = dataGridViewCellStyle.Font;
this.ForeColor = dataGridViewCellStyle.ForeColor;
this.BackColor = dataGridViewCellStyle.BackColor;
} public bool EditingControlValueChanged
{
get { return valueChanged; }
set { this.valueChanged = value; }
}
} //定制该扩展列的单元格
public class DataGridViewComboBoxExCell:DataGridViewTextBoxCell
{
public override void InitializeEditingControl(int rowIndex, object initialFormattedValue, DataGridViewCellStyle dataGridViewCellStyle)
{
base.InitializeEditingControl(rowIndex, initialFormattedValue, dataGridViewCellStyle); DataGridViewComboBoxExEditingControl clt = DataGridView.EditingControl as DataGridViewComboBoxExEditingControl; DataGridViewComboBoxExColumn col = (DataGridViewComboBoxExColumn)OwningColumn; clt.DataSource = col.DataSource;
clt.DisplayMember = col.DisplayMember;
clt.ValueMember = col.ValueMember; clt.Text = Convert.ToString(this.Value);
} public override Type EditType
{
get
{
return typeof(DataGridViewComboBoxExEditingControl);
}
} public override Type ValueType
{
get
{
return typeof(string);
}
} public override object DefaultNewRowValue
{
get
{
return "";
}
}
} //定制该扩展列
public class DataGridViewComboBoxExColumn : DataGridViewColumn
{
private object dataSoruce = null; public object DataSource
{
get { return dataSoruce; }
set { dataSoruce = value; }
}
private string valueMember; public string ValueMember
{
get { return valueMember; }
set { valueMember = value; }
}
private string displayMember; public string DisplayMember
{
get { return displayMember; }
set { displayMember = value; }
} public DataGridViewComboBoxExColumn()
: base(new DataGridViewComboBoxExCell())
{ } public override DataGridViewCell CellTemplate
{
get
{
return base.CellTemplate;
}
set
{
if (value != null && !value.GetType().IsAssignableFrom(typeof(DataGridViewComboBoxExCell)))
{
throw new InvalidCastException("is not DataGridViewComboxExCell");
}
base.CellTemplate = value;
}
}
private DataGridViewComboBoxExCell ComboBoxCellTemplate
{
get
{
return (DataGridViewComboBoxExCell)this.CellTemplate;
}
}
}
{
if (dataGridView1.CurrentCell.ColumnIndex == 0) //0是你需要设置成可写的combo列
{
ComboBox cb = e.Control as ComboBox;
if (cb != null)
{
cb.DropDownStyle = ComboBoxStyle.DropDown;
}
}
} private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
if (e.ColumnIndex == 0) //0是你需要设置成可写的combo列
{
DataGridViewComboBoxCell dgc = (DataGridViewComboBoxCell)dataGridView1[0, e.RowIndex];
if (!dgc.Items.Contains(e.FormattedValue))
{
dgc.Items.Add(e.FormattedValue);
}
dgc.Value = e.FormattedValue; }
}