建立了一个用户类:
class clsStudent
{
private string _strName; public string StrName
{
get { return _strName; }
set { _strName = value; }
} private string _strSex; public string StrSex
{
get { return _strSex; }
set { _strSex = value; }
} private string _strAge; public string StrAge
{
get { return _strAge; }
set { _strAge = value; }
}
}程序界面设计:
逐个录入该用户信息,存储到实例化的用户类中,并且将该实例化类存储到数组中。
添加信息时如果勾选了CheckBox,则对其性别分两次存入数组。
问题就在一旦勾选CheckBox,则数组中以前存储的性别信息就会被最后一次的性别信息覆盖。
代码如下:
ArrayList al; private void Search()
{
DataTable dt = new DataTable();
dt.Columns.Add("姓名", typeof(string));
dt.Columns.Add("年龄", typeof(string));
dt.Columns.Add("性别", typeof(string));
for (int i = 0; i < al.Count; i++)
{
DataRow dr = dt.NewRow();
Student tmp = (Student)al[i];
string x1 = tmp.StrName;
string x2 = tmp.StrAge;
string x3 = tmp.StrSex;
dr[0] = x1;
dr[1] = x2;
dr[2] = x3;
dt.Rows.Add(dr);
}
dataGridView1.DataSource = dt;
}
private void AddData(Student st)
{
if (al == null) al = new ArrayList();
al.Add(st);
} private void button1_Click(object sender, EventArgs e)
{
Student stu1 = new Student();
stu1.StrAge = textBox2.Text.Trim();
stu1.StrName = textBox1.Text.Trim();
if (checkBox1.Checked)
{
stu1.StrSex = "男";
AddData(stu1); stu1.StrSex = "女";
AddData(stu1);
}
else
{
AddData(stu1);
}
} private void button2_Click(object sender, EventArgs e)
{
Search();
}程序设计需要一个CheckBox做判断,但是不知道如何解决
不勾选CheckBox的运行效果如下:勾选CheckBox的运行效果如下:请大家帮帮忙,小弟新手,谢谢了
class clsStudent
{
private string _strName; public string StrName
{
get { return _strName; }
set { _strName = value; }
} private string _strSex; public string StrSex
{
get { return _strSex; }
set { _strSex = value; }
} private string _strAge; public string StrAge
{
get { return _strAge; }
set { _strAge = value; }
}
}程序界面设计:
逐个录入该用户信息,存储到实例化的用户类中,并且将该实例化类存储到数组中。
添加信息时如果勾选了CheckBox,则对其性别分两次存入数组。
问题就在一旦勾选CheckBox,则数组中以前存储的性别信息就会被最后一次的性别信息覆盖。
代码如下:
ArrayList al; private void Search()
{
DataTable dt = new DataTable();
dt.Columns.Add("姓名", typeof(string));
dt.Columns.Add("年龄", typeof(string));
dt.Columns.Add("性别", typeof(string));
for (int i = 0; i < al.Count; i++)
{
DataRow dr = dt.NewRow();
Student tmp = (Student)al[i];
string x1 = tmp.StrName;
string x2 = tmp.StrAge;
string x3 = tmp.StrSex;
dr[0] = x1;
dr[1] = x2;
dr[2] = x3;
dt.Rows.Add(dr);
}
dataGridView1.DataSource = dt;
}
private void AddData(Student st)
{
if (al == null) al = new ArrayList();
al.Add(st);
} private void button1_Click(object sender, EventArgs e)
{
Student stu1 = new Student();
stu1.StrAge = textBox2.Text.Trim();
stu1.StrName = textBox1.Text.Trim();
if (checkBox1.Checked)
{
stu1.StrSex = "男";
AddData(stu1); stu1.StrSex = "女";
AddData(stu1);
}
else
{
AddData(stu1);
}
} private void button2_Click(object sender, EventArgs e)
{
Search();
}程序设计需要一个CheckBox做判断,但是不知道如何解决
不勾选CheckBox的运行效果如下:勾选CheckBox的运行效果如下:请大家帮帮忙,小弟新手,谢谢了
解决方案 »
- 看看这两种架构哪种更适合万人共用一台服务器
- 在c#中SplitContainer的用法?怎么样实现块的隐藏?谢谢
- Image.FromStream()参数无效
- 能否利用WebBrower控件操作javascript弹出窗口中的元素,实现自动选择
- 怎样遍历winform中的所有对象?
- Datetime.Parse 如何按照自定义格式转换string 到 Datetime.
- vs2005里的Team Architect怎么用?
- 私人订单,寻苏州地区.NET程序员共同开发
- 怎么用C#得到一个进程的路径!!
- 老问题,怎样从一个窗口实例化类里控制另一个窗口实例化类里的控件?
- txt大文件搜索
- c++转成c#
这个是static的是吧,如果是继续往下看。
Student stu1 = new Student();
stu1.StrAge = textBox2.Text.Trim();
stu1.StrName = textBox1.Text.Trim();
if (checkBox1.Checked)
{
stu1.StrSex = "男";
AddData(stu1); stu1.StrSex = "女";
AddData(stu1);
}
else
{
AddData(stu1);
}
问题关键出在这,一个实例虽然加入了数组,但是你他的引用更改了数据。肯定会把原来的覆盖掉的。
{
private string _strName; public string StrName
{
get { return _strName; }
set { _strName = value; }
} private string _strSex; public string StrSex
{
get { return _strSex; }
set { _strSex = value; }
} private string _strAge; public string StrAge
{
get { return _strAge; }
set { _strAge = value; }
}
}
=>
class clsStudent:ICloneable
{
private string _strName; public string StrName
{
get { return _strName; }
set { _strName = value; }
} private string _strSex; public string StrSex
{
get { return _strSex; }
set { _strSex = value; }
} private string _strAge; public string StrAge
{
get { return _strAge; }
set { _strAge = value; }
} object ICloneable.Clone()
{
return base.MemberwiseClone();
}
}
----------------------------------------stu1.StrSex = "女";
AddData(stu1);=>Student stu2 = stu1.Clone();stu2.StrSex = "女";
AddData(stu2);
类实例化赋值后,动态存储后是不能修改值的。
谢谢了!!
图片是发到百度空间的,不知道怎么回事一会儿就看不到了