您的位置:首页 > 其它

浅谈ListBox控件,将对象封装在listBox中,在ListBox中显示对象中某个属性,在ListBox中移除和移动信息

2013-07-31 00:23 330 查看
大家好,俗称万事开头难,不经历风雨,怎能见彩虹。在此小编给大家带来一个自己练习的小实例,希望与大家一起分享与交流。下面进入应用场景,从SQL2008数据库取出数据,给ListBox赋值在界面并显示出来,通过窗体应用程序上Button控件,执行移动、移除等功能。

开发环境

开发工具:MicrosoftVisualStudio旗舰版、SQLServer2008.

开发环境:.NETFramework4ClientProfile.

实现步骤

1、搭建MVC框架、建立PERSON_T表格;

首先,了解什么是MVC框架,MVC全名是ModelViewController,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法,这个方法的假设前提是如果业务逻辑被聚集到一个部件里面,而且界面和用户围绕数据的交互能被改进和个性化定制而不需要重新编写业务逻辑MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

我在VS项目中建立一个目录如下图:





然后,在SQL2008中FMSDB数据库中建立PERSON_T表;具体代码见下方:

USE[FMSDB]
GO

/******Object:Table[dbo].[PERSON_T]ScriptDate:07/30/201315:47:33******/
SETANSI_NULLSON
GO

SETQUOTED_IDENTIFIERON
GO

CREATETABLE[dbo].[PERSON_T](
[NAME][nvarchar](50)NULL,
[AGE][int]NULL
)ON[PRIMARY]

GO




2、与SQL2008建立连接、查询和删除信息;

首先,给数据库创建一个实例FMSDB,再给FMSDB资料库创建一个PERSON_T表,新添用户“root”,密码“12345”;能成功连接上数据库服务器,

数据库连接具体见下图:





App.config与数据库连接具体代码见下:

<?xmlversion="1.0"encoding="utf-8"?>
<configuration>
<appSettings>
<addkey="myDatabase.Conn"value="DataSource=localhost,1433;NetworkLibrary=DBMSSOCN;InitialCatalog=FMSDB;UserID=root;Password=12345;"/>
</appSettings>
</configuration>


SelectGW.cs中具体代码见下:其中需要添加引用System.Configuration、System.Data.SqlClient.


usingSystem;
usingSystem.Data;
usingSystem.Data.SqlClient;
usingSystem.Configuration;

namespaceListBoxUnit1.DataGateway
{
publicclassSelectGW
{
privatestringconnectString="";

publicSelectGW()
{
connectString=ConfigurationManager.AppSettings["myDatabase.Conn"];
}

publicSqlConnectionGetSqlConnection()
{
SqlConnectionconn=newSqlConnection(connectString);
conn.Open();
returnconn;
}

publicDataSetGetPersonData()
{
DataSetds=newDataSet();
stringsqlText=@"SELECT*FROMPERSON_T;";
try
{
SqlConnectionconn=GetSqlConnection();
SqlCommandsqlCommand=conn.CreateCommand();
sqlCommand.CommandText=sqlText;
sqlCommand.CommandType=CommandType.Text;
SqlDataAdaptersqlDataAdapter=newSqlDataAdapter(sqlCommand);

sqlDataAdapter.Fill(ds);
}
catch(Exceptionex)
{

}
returnds;
}

publicintDeleteUserInfoData(stringNAME)
{
stringsqlText=@"deleteFROMPERSON_TwhereNAME='{0}';";
sqlText=string.Format(sqlText,NAME);
try
{
SqlConnectionconn=GetSqlConnection();
SqlCommandsqlCommand=conn.CreateCommand();
sqlCommand.CommandText=sqlText;
sqlCommand.CommandType=CommandType.Text;
inti=sqlCommand.ExecuteNonQuery();
returni;
}
catch(Exceptionex)
{
return0;
}
}
}
}


.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

3、建立一个Person对象,重载用户姓名;

Person.cs中具体代码见下:

namespaceListBoxUnit1
{
publicclassPerson
{
privateint_age;

publicintAge
{
get{return_age;}
set{_age=value;}
}
privatestring_name;

publicstringName
{
get{return_name;}
set{_name=value;}
}
publicoverridestringToString()
{
returnthis._name;
}
}
}


.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

4、在控制层中主要代码如下Controller.cs:

usingSystem.Collections.Generic;
usingSystem.Data;
usingListBoxUnit1.DataGateway;

namespaceListBoxUnit1.Core
{
publicclassController
{
publicSelectGWGW;
publicController()
{
GW=newSelectGW();
}

publicList<Person>GetUserInfo()
{
List<Person>persons=newList<Person>();
DataSetds=GW.GetPersonData();
if(ds.Tables[0].Rows.Count>0)
for(inti=0;i<ds.Tables[0].Rows.Count;i++)
{
Personp=newPerson();
p.Name=ds.Tables[0].Rows[i][0].ToString();
p.Age=int.Parse(ds.Tables[0].Rows[i][1].ToString());
persons.Add(p);
}
returnpersons;
}

publicboolDeleteUser(stringname)
{
boolresult=false;
inti=GW.DeleteUserInfoData(name);
if(i>0)
{
result=true;
}
returnresult;
}
}
}


.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

5、在视图层主要代码MainFrom.cs具体如下:

usingSystem;
usingSystem.Collections.Generic;
usingSystem.Windows.Forms;
usingListBoxUnit1.Core;

namespaceListBoxUnit1
{
publicpartialclassMainForm:Form
{
privateControllerControl;

publicMainForm()
{
InitializeComponent();
Control=newController();
}

privatevoidMainForm_Load(objectsender,EventArgse)
{

List<Person>persons=newList<Person>();

persons=Control.GetUserInfo();
for(inti=0;i<persons.Count;i++)
{
listBoxFor.Items.Add(persons[i]);
listBoxFor.SelectedIndex=0;
}
}

privatevoidbtnAdd_Click(objectsender,EventArgse)
{
if(listBoxFor.SelectedItems.Count==0)
{
MessageBox.Show("没选中添加用户信息");
}
else
{
listBoxForeach.Items.Add(listBoxFor.SelectedItem);
listBoxFor.Items.Remove(listBoxFor.SelectedItem);
}

}

privatevoidbtnRemove_Click(objectsender,EventArgse)
{

if(listBoxFor.SelectedItem!=null)
{

DialogResultcomfirm=MessageBox.Show("确定删除选中信息...","确定删除",MessageBoxButtons.YesNo,
MessageBoxIcon.Exclamation);
if(comfirm==DialogResult.Yes)
{
stringName=listBoxFor.SelectedItem.ToString();
boolresult=Control.DeleteUser(Name);
if(result)
{
listBoxFor.Items.Remove(listBoxFor.SelectedItem);
}
}
}

}

privatevoidbtnLeft_Click(objectsender,EventArgse)
{
if(listBoxForeach.SelectedItems.Count==0)
{
MessageBox.Show("没选中添加用户信息");
}
else
{
listBoxFor.Items.Add(listBoxForeach.SelectedItem);
listBoxForeach.Items.Remove(listBoxForeach.SelectedItem);
}
}
}
}


.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

效果图

窗体载入画面





可以删除左边选中一栏一个信息,单击移除





删除成功后界面图





技术点

熟悉ListBox的一些基本用法,实现数据移除和移动的功能;

了解MVC框架后,将MVC框架思想应用到实际例子中;

建立Person对象,通过重载用户名后,显示在界面的只是Person对象上的一个属性;

利用SQL进行数据的查询与删除,同时更新视图层的信息;

熟练运用If…else语句,才能将控制能做好。

问题疑惑

怎样能将控制做完善,才能让系统经得起考验,不会出现奔溃或bug。

怎么让面向对象的编程能够灵活运用起来。

感想

通过几天的劳作,将代码分享一下,中间肯定存在不足,希望大家提供好的建议,通过这次锻炼,熟悉了面向对象编程、以及MVC系统框架的搭建有了一些了解、掌握建立于SQL数据库的链接的方法等。

源码下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐