您的位置:首页 > 移动开发 > Objective-C

关于DataGridView,ComboBox,XDocument和XElement的一点总结

2010-05-15 20:35 309 查看
一. DataGridView随父容器调整列宽

     只需设置每一列的AutoSizeMode为Fill

private void cbx_TextChanged(object sender, EventArgs e)
{
this.cbx.TextChanged -= new System.EventHandler(this.cbx_TextChanged);
//DroppedDown = true时会再次触发TextChanged事件,这不是所需要的
if (cbx.SelectedIndex == -1)//判断是由输入还是选择触发的TextChanged事件
{
//由输入触发
int start = cbx.SelectionStart;//保存下次输入位置,不设置每次输入后跑到最前面
cbx.Items.Clear();//清除下拉列表项
if (cbx.Text != null && cbx.Text != string.Empty)//输入非空
{
string text = this.cbx.Text;//保存输入内容,否则填充后会被改为第一项
//重新填充列表项
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
if (ds.Tables[0].Rows[i][1].ToString().Contains(cbx.Text))
cbx.Items.Add(ds.Tables[0].Rows[i][1].ToString());
}
if (cbx.Items.Count > 0)//有符合的项
{
cbx.DroppedDown = true;//显示下拉框,会触发TextChanged事件和导致鼠标消失
cbx.Text = text;//重置为原来输入的内容
//显示鼠标
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.IBeam;
Cursor = System.Windows.Forms.Cursors.Default;
}
else
{
this.Focus();//见下面解释
}
}
else
{
//由选择触发
this.Focus();//见下面解释
}
cbx.SelectionStart = start;//置回输入位置
}
this.cbx.TextChanged += new System.EventHandler(this.cbx_TextChanged);//重新注册事件
}


关于两个this.Focus()的解释: 我一开始没添加这两句的时候, 当再次点击下拉按钮和填充完成时,会弹出"InvalidNumber不能为0"这种错误(好像是这样的, 具体我记不清)。后来我想看看是不是列表项的问题,就用MessageBox.Show()了一下,谁知Show了以后就没事了。

所以就想到置一下焦点应该就没问题了(VS2008)。 

三. 关于XDocument和XElement的Save()方法

一开始没查到,后来发现除了网上说的那些区别,还有就是他们Save的时候,XDocument会保存为系统默认编码,而XElement保存为"UTF-8"。

 

关于ComboBox那段代码参考了“夜无眠ID:Rommen”的文章“C# ComboBox DroppedDown属性存在的问题”,在此表示感谢。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  object ajax string c# null