Joo*_*ooj 2 .net c# datagridview datagridviewtextboxcell
我有一个自定义DataGridView控件,并希望在设计器(CellStyle构建器)中设置自定义列的文本格式.
假设我想将文本格式设置为大写.在搜索了这个之后,我找到了一些添加新事件然后更改文本格式的解决方案,但这不是我想要的.我想为所有设计的列添加一个新属性,并设置或更改文本格式.
这该怎么做?
谢谢,最好的问候.
我担心没有标准属性来格式化文本你想要的方式.
如果您真的不想使用各种DGV事件来进行文本格式化,您始终可以创建自己的DGV组件来执行您想要的操作并使用它们代替标准DGV组件. MSDN上的这篇文章应该可以帮助您入门.
编辑
这是一个自称为HanSolo的人的博客文章,可以满足您的需求.
这是代码:
public class DataGridViewUpperCaseTextBoxColumn : DataGridViewTextBoxColumn {
public DataGridViewUpperCaseTextBoxColumn() : base() {
CellTemplate = new DataGridViewUpperCaseTextBoxCell();
}
}
public class DataGridViewUpperCaseTextBoxCell : DataGridViewTextBoxCell {
public DataGridViewUpperCaseTextBoxCell() : base() { }
public override Type EditType {
get {
return typeof(DataGridViewUpperCaseTextBoxEditingControl);
}
}
}
public class DataGridViewUpperCaseTextBoxEditingControl : DataGridViewTextBoxEditingControl {
public DataGridViewUpperCaseTextBoxEditingControl() : base() {
this.CharacterCasing = CharacterCasing.Upper;
}
}
Run Code Online (Sandbox Code Playgroud)
在项目中包含此代码.完成后,您将能够将新的DataGridViewColumn添加到DataGridViewUpperCaseTextBoxColumn类型的DataGridView中.这个新的DataGridViewColumn会在列的TextBox组件中输入所有文本.
您还应该重新考虑不使用事件的决定.这很容易做到.例如,如果您有一个名为dataGridView1的DGV,您可以像这样使用CellFormatting事件:
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) {
// Check the value of the e.ColumnIndex property if you want to apply this formatting only so some rcolumns.
if (e.Value != null) {
e.Value = e.Value.ToString().ToUpper();
e.FormattingApplied = true;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
以大写形式编辑单元格的简单方法是在DataGridView中添加"EditingControlShowing"事件.
在这种情况下,您可以在随DataGridViewEditingControlShowingEventArgs参数一起提供的控件中设置'CharacterCasing'属性.
此控件基于文本框,因此您可以像TextBox一样工作!
如果列的类型与DataGridViewTextBoxColumn不同,则控件的基础可能具有属性"CharacterCasing".
我希望,我帮助过你.
伊塔洛