让.Net Compact Framework中的DataGird支持文本编辑


        前不久在使用VS.NET 2005开发Pocket PC 2003应用的时候发现DataGrid是不支持即时编辑的,开始总在找DataSource的问题,Google之后找到了问题根源: NET Compact Framework 版本的 DataGrid 的一个主要区别在于它无法在运行时在 DataGrid 中编辑单元格。但是觉得MSDN提供的方案不够理想,就稍微改良了一下。
None.gif // 由于NetCF上的DataGrid不支持编辑,所以用这个文本框来托管.
None.gif
private  TextBox _cellEditBase  =   new  TextBox();
None.gif
None.gif
public  FormTest()
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    InitializeComponent();
InBlock.gif
InBlock.gif    
//初始化DataGrid编辑文本框.
InBlock.gif
    _cellEditBase.Parent = dagRanges;
InBlock.gif    _cellEditBase.Visible 
= false;
InBlock.gif    _cellEditBase.LostFocus 
+= new EventHandler(_cellEditBase_LostFocus);
InBlock.gif    _cellEditBase.TextChanged 
+= new EventHandler(_cellEditBase_TextChanged);
InBlock.gif    _cellEditBase.GotFocus 
+= new EventHandler(_cellEditBase_GotFocus);
ExpandedBlockEnd.gif}

None.gif
None.gif
private   void  _cellEditBase_GotFocus( object  sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    _cellEditBase.SelectAll();
ExpandedBlockEnd.gif}

None.gif
None.gif
private   void  _cellEditBase_TextChanged( object  sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
try
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        dagRanges[_bindCellBase.RowNumber, _bindCellBase.ColumnNumber] 
= _cellEditBase.Text;
ExpandedSubBlockEnd.gif    }

InBlock.gif    
catch
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
//TODO: hack the format exception.
ExpandedSubBlockEnd.gif
    }

ExpandedBlockEnd.gif}

None.gif
None.gif
private   void  _cellEditBase_LostFocus( object  sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    _cellEditBase.Visible 
= false;
ExpandedBlockEnd.gif}

None.gif
None.gif
// 处理DataGrid的CurrentCellChanged事件,以显示文本编辑框.
None.gif
private   void  dagRanges_CurrentCellChanged( object  sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
if (RangesTable.Columns[dagRanges.CurrentCell.ColumnNumber].ReadOnly)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
return;
ExpandedSubBlockEnd.gif    }

InBlock.gif    _bindCellBase 
= dagRanges.CurrentCell;
InBlock.gif    
object objValue = dagRanges[_bindCellBase.RowNumber, _bindCellBase.ColumnNumber];
InBlock.gif    
string cellValue = string.Empty;
InBlock.gif    
if (objValue != null)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        cellValue 
= objValue.ToString();
ExpandedSubBlockEnd.gif    }

InBlock.gif    _cellEditBase.Text 
= cellValue;
InBlock.gif    _cellEditBase.Bounds 
= dagRanges.GetCellBounds(_bindCellBase.RowNumber, _bindCellBase.ColumnNumber);
InBlock.gif    _cellEditBase.Visible 
= true;
InBlock.gif    _cellEditBase.Focus();
ExpandedBlockEnd.gif}

参考资源:
Microsoft .NET Compact Framework 开发常见问题解答

转载于:https://www.cnblogs.com/bengxia/archive/2006/06/08/420529.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值