您的位置:首页 > 编程语言 > C#

C# winform编程 Q&A

2010-04-17 21:26 211 查看
1. Q:c# winform DataGridView编辑固定查询了列名,但是数据显示到了另外的列里解决办法?

A:在DataGridView上右击选择编辑列,在数据,DataPropertyName里对应上数据库里的字段名,即可

2. Q:如何禁用datagridview的行自动增加功能?
A:DataGridView的AllowUserToAddRows:False.

3. Q:DataGridview中CheckBox如何赋值?
A:this.dataGridView1.Rows[rowIndex].Cells[colName].Value = 1;
4. Q:数据库操作时,出现“至少有一个参数没有指定值”异常?
A:if (model.Name.Trim() != "")
{
strSql1.Append("name,");
strSql2.Append("" + model.Name + ",");
}
当添加的字段为字符串时,少了字符串引号,修改为
if (model.Name.Trim() != "")
{
strSql1.Append("name,");
strSql2.Append("'" + model.Name + "',");
}
5. Q: 删除的datagridview的当前选中行,同时更改数据库,下面的代码有什么问题?
try
{
this.dataGridView1.Rows.Remove(dataGridView1.CurrentRow);
int id = Int32.Parse(dataGridView1.CurrentRow.Cells["lxbh"].Value.ToString().Trim());
Controller.XJ_LINE.Delete(id);
Controller.XJ_LINE.DeleteList(id);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
A:在datagridview里面删除的是当前行,但数据库里它删除的永远是下一行。正确形式:
try
{
int id = Int32.Parse(dataGridView1.CurrentRow.Cells["lxbh"].Value.ToString().Trim());
this.dataGridView1.Rows.Remove(dataGridView1.CurrentRow);
Controller.XJ_LINE.Delete(id);
Controller.XJ_LINE.DeleteList(id);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
6.Q:for (int i = 0; i < dataGridView1.Rows.Count; ++i )
{
string tmp = dataGridView1.Rows[i].Cells["yhbh"].Value.ToString();

dataGridView1.Rows[i].Cells["xj"].Value = 0;
for (int j = 0; j < lst.Count;++j )
{
string tmpb = lst[j].ToString();
if(tmp.Equals(tmpb))
{
dataGridView1.Rows[i].Cells["xj"].Value = 1;
}
}
}
A:字符串Trim()方法的作用,从数据库里读出的数据有时会加上莫名的空格符号,所以Trim()掉。
for (int i = 0; i < dataGridView1.Rows.Count; ++i )
{
string tmp = dataGridView1.Rows[i].Cells["yhbh"].Value.ToString();

dataGridView1.Rows[i].Cells["xj"].Value = 0;
for (int j = 0; j < lst.Count;++j )
{
string tmpb = lst[j].ToString();
if(tmp.Equals(tmpb))
{
dataGridView1.Rows[i].Cells["xj"].Value = 1;
}
}
}
7. Q:如何改变datagridview的当前行,三角箭头移动?
A:有个CurrentRow属性,可是只读,郁闷,何必呢!还有个CurrentCell属性可用,如下:
dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.CurrentRow.Index - 1].Cells[0];
问题得以解决。
8.Q:select语句中出现保留字或缺少参数?
strSql.Append("select xt.id as id,,se.xm as xm,xl.name as name,begindate,begintime ");
strSql.Append(" FROM XJ_TASK xt,XJ_LINE xl,SYS_EMPLOYEE se where xt.lineid=xl.id and xt.gzbhid=se.id ");
A:语句中多了一个逗号
strSql.Append("select xt.id as id,se.xm as xm,xl.name as name,begindate,begintime ");
strSql.Append(" FROM XJ_TASK xt,XJ_LINE xl,SYS_EMPLOYEE se where xt.lineid=xl.id and xt.gzbhid=se.id ");

9.Q:无法绑定到新的显示成员。参数名: newDisplayMember?代码如下:
DataSet empDataSet = Controller.XJ_USER.GetAllUser();
cboXjry.DataSource = empDataSet;
cboXjry.DisplayMember = "xm";
cboXjry.ValueMember = "id";
A:设置数据源时候应该具体到表,如下:
DataSet empDataSet = Controller.XJ_USER.GetAllUser();
cboXjry.DataSource = empDataSet.Tables[0];
cboXjry.DisplayMember = "xm";
cboXjry.ValueMember = "id";
10.Q:在panel里显示多张图片?
A: ListView和ImageList的配合使用,添加的顺序不能乱,否则图片不显示,如下:
listView1.View = System.Windows.Forms.View.LargeIcon;
listView1.LargeImageList = imageList1;
imageList1.ImageSize = new Size(24, 24);

imageList1.Images.Add(Image.FromFile("D://door.jpg"));
imageList1.Images.Add(Image.FromFile("D://door1.jpg"));
imageList1.Images.Add(Image.FromFile("D://door3.jpg"));
imageList1.Images.Add(Image.FromFile("D://bg.jpg"));

listView1.Items.Add("hi",0);
listView1.Items.Add("hi", 1);
listView1.Items.Add("hi", 2);
listView1.Items.Add("hi", 3);
11. Q:map.MapDoorId,map.MapDoorPos字符串的删除怎么没有用啊?
//删除最后一个逗号
map.MapDoorId.Remove(map.MapDoorId.Length - 1, 1);
map.MapDoorPos.Remove(map.MapDoorPos.Length - 1, 1);
A:字符串是不变类,这点很重要。这样删除不影响原字符串,只是返回删除后的结果,正确的使用如下:
//删除最后一个逗号
map.MapDoorId = map.MapDoorId.Remove(map.MapDoorId.Length - 1, 1);
map.MapDoorPos = map.MapDoorPos.Remove(map.MapDoorPos.Length - 1, 1);

12.Q:急求助:SVN库被锁且无法解除,Error: 不能校验路径“/XXX/XXX.doc”上的锁;没有匹配的可用锁标识 ?

A:试试以下步骤:
1、备份本地修改的文件
2、update那个目录
3、选中文件get lock,在窗口中选中steal lock
4、修改文件提交
其实只要步骤3就能搞定了,但为了保险,还是按以上步骤做一下吧。
13. Q:我的数据库结构是这样子的 年 月 日 (都为文本型) 2005 01 05 要是我想这样比较大于2005-01-05的日期的语句应该怎么写好 ?
A:日期比较用 # 符号括住日期 不要用 ' ,如" stime <=#" + ed + "# and stime >=#" + bd + "#"
14.Q:向panel里添加多个控件,为什么只显示一个呢?
for (int i = 0; i < dt.Rows.Count; ++i)
{

Button btn = new Button();
btn.Text = dt.Rows[i]["MapName"].ToString();
btn.FlatStyle = FlatStyle.Flat;

panel2.Controls.Add(btn);
}
}
A:添加的控件重叠了,必须设置它们的位置,如下所示
for (int i = 0; i < dt.Rows.Count; ++i)
{
if (panel2.Controls.Count > 0)
{
Button btn = new Button();
btn.Text = dt.Rows[i]["MapName"].ToString();
btn.FlatStyle = FlatStyle.Flat;

btn.Location = new Point(panel2.Controls[panel2.Controls.Count - 1].Location.X + 100, panel2.Controls[panel2.Controls.Count - 1].Location.Y);
panel2.Controls.Add(btn);
}
else
{
Button btn = new Button();
btn.Text = dt.Rows[i]["MapName"].ToString();
btn.FlatStyle = FlatStyle.Flat;
panel2.Controls.Add(btn);
}
}
15. Q:c# dataGridView添加行号和隔行换色代码???????????
A:
在dataGridView 的RowPostPaint 事件是加入如下代码:

// 这是加入行号的代码

using (SolidBrush b = new SolidBrush(dataGridView1.RowHeadersDefaultCellStyle.ForeColor))
{
e.Graphics.DrawString((Convert.ToInt32(e.RowIndex) + 1).ToString(System.Globalization.CultureInfo.CurrentCulture), e.InheritedRowStyle.Font, b, e.RowBounds.Location.X + 20, e.RowBounds.Location.Y + 4);
}

//这是了隔行换色的代码
this.dataGridView1.RowsDefaultCellStyle.BackColor = Color.FromArgb(4, 230, 228);
this.dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.FromArgb(187, 227, 227);
this.dataGridView1.GridColor = Color.FromArgb(208, 255, 255);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: