“WindowsFormsApplication1.Form1”的类型初始值设定项引发异常。

swt1230 2013-05-15 08:51:47
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;


namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{

private static DataTable dtSource = CreateTableStruct();//存储数据源
//创建表结构
private static DataTable CreateTableStruct()
{
DataTable dt = new DataTable(); //创建一个DataTable
DataColumn column; //声明一个DataColumn
column = new DataColumn(); // 创建一个 列
column.DataType = System.Type.GetType("System.Boolean");//声明列的类型
column.ColumnName = "checkOver"; //设置列名称
dt.Columns.Add(column); //添加到表中
column = new DataColumn(); //创建一个列
column.DataType = System.Type.GetType("System.String");//声明列的类型
column.ColumnName = "ID"; //设置列的名称
dt.Columns.Add(column); //添加到表中
column = new DataColumn(); //创建一个列
column.DataType = System.Type.GetType("System.String");//声明列的类型
column.ColumnName = "姓名"; //设置列的名称
dt.Columns.Add(column); //添加到表中
column = new DataColumn(); //创建一个列
column.DataType = System.Type.GetType("System.String");//声明列的类型
column.ColumnName = "年龄"; //设置列的名称
dt.Columns.Add(column); //添加到表中column = new DataColumn(); //创建一个列
column.DataType = System.Type.GetType("System.String");//声明列的类型
column.ColumnName = "性别"; //设置列的名称
dt.Columns.Add(column); //添加到表中
return dt;
}
//创建数据
private void CreateData(int createCount)
{
int alreadyRows = dtSource.Rows.Count; //获取数据源中最大行数
int baseRowNum = 0; //存储当前中最大的ID号
if (alreadyRows > 0)
{
try
{
baseRowNum = int.Parse(dtSource.Rows[alreadyRows - 1][1].ToString());//获取最大的行号
}
catch (Exception ex)
{
MessageBox.Show(ex.Message); //显示错误信息
return;
}
}
DataRow row; //声明一个行号
for (int i = baseRowNum; i < baseRowNum + createCount; i++) //创建行数
{
row = dtSource.NewRow();
row["checkOver"] = true;
row["ID"] = (i + 1);
row["姓名"] = "姓名" + (i + 1);
row["年龄"] = "年龄" + (i + 1);
row["性别"] = "性别" + (i + 1);
dtSource.Rows.Add(row);
}
dataGridView1.DataSource = dtSource; //绑定数据源

}
// 创建行数
private void button3_Click(object sender, EventArgs e)
{
if (textBox1.Text.Trim().Length > 0) //如果输入不为空
{
int rownum = 0; //存储输入的行数


rownum = int.Parse(textBox1.Text); //用户输入转化行数
CreateData(rownum); //调用创建数据源的方法创建rownum行数据


}
else
{
MessageBox.Show("请输入需要创建的行数"); //提示出错
}
}
//删除数据
private void button2_Click(object sender, EventArgs e)
{
if (textBox2.Text.Trim().Length > 0) //如果输入不为空
{
int rownum = 0; //存储需要上出的行数
try
{
rownum = int.Parse(textBox2.Text); //获取需要删除的行数
int sourceCount = dtSource.Rows.Count; //获取数据源的行数
if (rownum > sourceCount) //判断是否有这么多行
{
MessageBox.Show("输入行数超过了总行数"); //提示错误
}
else
{
dtSource.Rows.RemoveAt(rownum - 1);
dataGridView1.DataSource = dtSource;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
else
{
MessageBox.Show("请输入需要删除的行数"); //提示错误
}
}

//填充combox控件
public void FillCombox()
{
// comboBox1.Items.Add("男");
// comboBox1.Items.Add("女");
}
//添加事件
private void button1_Click(object sender,EventArgs e)
{
if (textBox3.Text.Trim().Length < 0) //判断是否输入姓名
{
MessageBox.Show("请输入姓名");
}
else if(textBox5.Text.Trim().Length <0)
{
MessageBox.Show("请输入年龄");
}
else if (comboBox1.SelectedItem == null)
{
MessageBox.Show("请选择性别");
}
else
{
DataRow newR = dtSource.NewRow(); //创建一个新行
int alreadyRows = dtSource.Rows.Count; //获取数据源中的总行数
int baseRowNum = 0; //存储当前最大的ID号
if(alreadyRows > 0)
{
try
{
baseRowNum = int.Parse(dtSource.Rows[alreadyRows - 1][1].ToString()); //获取最大的行号
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
}
newR["checkOver"] = true; //设置新建行
newR["ID"] = (baseRowNum + 1);
newR["姓名"] = textBox3.Text;
newR["年龄"] = textBox5.Text;
newR["性别"] = comboBox1.SelectedItem.ToString();
dtSource.Rows.Add(newR); //添加到数据源
dataGridView1.DataSource = dtSource; //绑定数据源
}
}


public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
comboBox1.Items.Add("男");
comboBox1.Items.Add("女");
}

private void textBox1_TextChanged(object sender, EventArgs e)
{

}

private void textBox2_TextChanged(object sender, EventArgs e)
{

}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
comboBox1.Items.Add("男");
comboBox1.Items.Add("女");
}

private void textBox3_TextChanged(object sender, EventArgs e)
{

}

private void textBox5_TextChanged(object sender, EventArgs e)
{

}

private void button1_Click_1(object sender, EventArgs e)
{

}

private void button2_Click_1(object sender, EventArgs e)
{

}

private void button3_Click_1(object sender, EventArgs e)
{

}

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{

}
}
}
上面是我的代码,我的程序总是报这个错误,我真的解决不了,我是个菜鸟,求大神指教啊
...全文
1069 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
u011093305 2015-07-08
  • 打赏
  • 举报
回复
我也遇到了这个问题,我的原因是 有2010和2013两个版本的冲突造成的。
黄色茶杯 2014-09-02
  • 打赏
  • 举报
回复
静态变量不要调用方法赋值,可以赋常量值.可能是窗口加载时方法没有加载或者方法有问题
swt1230 2013-05-21
  • 打赏
  • 举报
回复
我才开始学C# 好多问题都不会啊 这把我给愁的!11你后面多给我解释下
swt1230 2013-05-15
  • 打赏
  • 举报
回复
我是不是下面的按钮没有调用函数啊!!可是怎么写啊!大哥我真不会啊!!麻烦再帮帮我啊
swt1230 2013-05-15
  • 打赏
  • 举报
回复
非常感谢你啊!!可是我下面的按钮之类的不能用啊 你能帮帮我啊 !!我会加分的
swt1230 2013-05-15
  • 打赏
  • 举报
回复
我就想编一个表格, 底下的按钮之类的可以实现相应的功能就好了。你说的dtSource放在构造函数里赋值,可是dtSource是用来绑定数据源的全局变量,我真不知道在哪里赋值和怎么赋值。我旁边的同学都不会啊!看不明白。
yy0910 2013-05-15
  • 打赏
  • 举报
回复
column.ColumnName = "性别"; 的column 没有 column = new DataColumn(); 这句话,所以,就报错了,你在性别的列前重新new一下,就好了,我刚才帮你测试了一下
yy0910 2013-05-15
  • 打赏
  • 举报
回复
如果是为了别的别的窗体引用,那就把dtSource放在构造函数里面赋值,,dtSource怎么没有赋值成功??你说了我才能帮你看
swt1230 2013-05-15
  • 打赏
  • 举报
回复
我改变了静态变量,后面的引用都无法执行了。dtSource也不成功啊
swt1230 2013-05-15
  • 打赏
  • 举报
回复
大哥 啊 我也知道是有问题 可是我解决不了啊 我用的是 visual studio 2010 中的C# 窗体编译的 ,没有明显的语法错误啊!而且是照着书弄得
yy0910 2013-05-15
  • 打赏
  • 举报
回复
你试着把你的全局静态变量变成实例变量。或者dtSource 的赋值放在构造函数里面。一般这样的问题都是由于静态变量初始化不成功造成的。
healer_kx 2013-05-15
  • 打赏
  • 举报
回复
只能说明你的代码有问题。
yy0910 2013-05-15
  • 打赏
  • 举报
回复
大致看了一下你的代码,应该没有问题,看看你的按钮的事件有没有绑定上。在设计窗体界面选中按钮右键查看属性窗口,click有没有值,没有的话,你选择一下,,,
yy0910 2013-05-15
  • 打赏
  • 举报
回复
大致看了你的代码应该没有问题,不知道你的事件有没有绑定上,,给你的事件方法中打上断点,先看看有没有调试进去,如果没有进去,说明该按钮的事件没有绑定上。点击你的按钮,右键属性,看看click有没有绑定上事件,如果click一栏为空,那你重新绑定一下,点击那个文本框,会有下拉框让你选择可以绑定的事件,你对应着选择一下,还有,我不是大哥,嘻嘻

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧