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

C#酒店管理重要知识点总结

2014-02-15 15:07 309 查看



C#酒店管理重要知识点总结 1

1 : 怎么使组件随着窗体大小的改变而改变(相对位置不变 eg:本来居中还是居中)?-----(使组件随窗体大小的改变而改变) 2

2 : 怎么是窗体分割成符合我们需求的一小块一小块?而且还可以随窗体大小的改变而改变大小? ---(布局必备) 2

3 : 在做C#的winform界面开发时,我们怎么使我们的组件大小相同,上下等距,左右间隔也等距呢? (布局必备) 3

4 : 怎么使窗体在刚运行的时候就显示在屏幕的中央呢??? 4

5 : 按回车键怎么直接执行一个按钮的操作呢?? 4

6 : 怎么把数据库中查询到的数据放在表格中显示,并且让表格的列的大小刚好为窗体的宽度? 5

7 : 怎么在几个组件添加一个边框,使效果如图 ??? 5

8 : 怎么使用密码框? 6

9 : 怎么把文本框设置为只读的? 6

11 : 怎么获取表格中我们想要的那一行的数据? 7

12: 怎么使子窗体和主窗体之间不可以切换? 8

13 : Application.Exit (); 和 f . Close() 的区别?? 8

14 : 怎么选出表格中为’空闲’ 的那一行信息? 9

15 : 怎么对数据库进行增删改? 10

16 : 怎么从登录窗口跳转到另外一个窗口,而让子窗体关闭,程序也跟着关闭? 11

17 : 怎么为DataGridView的表格赋值,用自己的代码而不是用那边直接选择的数据源?? 12

18 : 怎么把从数据库中查询到的数据赋值到DataGridView中去?? 13

1 : 怎么使组件随着窗体大小的改变而改变(相对位置不变 eg:本来居中还是居中)?-----(使组件随窗体大小的改变而改变)

答: 有一个叫做Anchor属性,图中的上下左右就是相对于窗体的距离始终保持窗体属性中Margin属性的大小.

如果左右长度不变,则选左右, 同理上下的也一样

2 : 怎么是窗体分割成符合我们需求的一小块一小块?而且还可以随窗体大小的改变而改变大小? ---(布局必备)

比如这个..

在C#的winform窗体中 布局的属性有, 有一个属性叫做 SplitContainer的, 这个属性可以把一个面板分割成左右或上下的两份,然后我们在添加一个FLowLayoutPanel的面板进去,然后用第一个问题的Anchor设置距离上下左右的大小就可以了.

3 : 在做C#的winform界面开发时,我们怎么使我们的组件大小相同,上下等距,左右间隔也等距呢? (布局必备)

如果我们一个一个来调大小会很麻烦的,所以VS2010给我们一个工具

,在这个图的最下面一排就是那一些对齐的方式,很方便,也很好用...

当然为了随窗体的变化而变化,我们还是要用到Anchor这个属性

4 : 怎么使窗体在刚运行的时候就显示在屏幕的中央呢???

选择CenterScreen就可以显示在中央了.当然还有很多个选择.,自己可以去试一试

5 : 按回车键怎么直接执行一个按钮的操作呢??

AcceptButton : 按下回车(Enter)执行选项按钮的操作.

CancelButton : 按下ESC(键盘左上角那个) 执行选项按钮的操作.

这个还不是很懂用...

6 : 怎么把数据库中查询到的数据放在表格中显示,并且让表格的列的大小刚好为窗体的宽度?

C#winform有一个DataGridView 的组件 ,把这个添加到面板中.然后点击右上角的小三角,会跳出如图的选项, 然后设置Anchor的上下左右,这样才会随窗体大小改变而改变. 然后点击选择数据源,就可以直接选择数据库中的表,然后显示出来.非常的方便实用

设置这个属性,可以让所以列的长度为DataGridView的长度

7 : 怎么在几个组件添加一个边框,使效果如图 ???

C#winform编程有一个组件: 这个组件就是边框,我们先把这个组件添加到面板中,然后再把我我们想要的组件添加到这个GroupBox 的框框中,就OK了

8 : 怎么使用密码框?

在 C# winform编程中,没有直接可以使用的密码框, 只有文本框, 但是它给我们一个属性,我们可以把文本框直接设置成密码框

9 : 怎么把文本框设置为只读的?

这个比较简单

到这里,基本上都是属于布局的,就是拖拖控件就可以完成的,下面就属于代码部分的了

10 : 我们怎么选中查询到的那一行标记起来?????????

如图:

#region 查询数据并高亮那一行

string name = tbName.Text;

int i = 0;

for (i = 0; i < dataGridView1.RowCount - 1; i++)

{

if (name.Equals(dataGridView1.Rows[i].Cells[0].Value.ToString()))

{

//选中表括格中的一行

int index = dataGridView1.CurrentRow.Index; //当前行在表格中第几行

dataGridView1.Rows[index].Selected = false; //把那一行设置为不选中状态

dataGridView1.Rows[i].Selected = true;

//把我们查询到的那一行设置为选中状态

dataGridView1.CurrentCell = dataGridView1.Rows[i].Cells[0];

//每一行的第一个单元格的那个三角尖,设置到我们刚才选中的那一行

break;

}

}

if (i >= dataGridView1.RowCount - 1)

{

MessageBox.Show("没有找到姓名为a:" + name + "的顾客信息");

}

#endregion

CurrentRows : 当前行

dataGridView : DataGridView的实例

dataGridView1.Rows[i].Cells[0].Value.ToString() : 表示第i 行,第一个单元格的值

11 : 怎么获取表格中我们想要的那一行的数据?

//获取表括格中某一行的数据,列的也可以,单元格也行

DataGridViewRow dgvr = dataGridView1.CurrentRow;

cName.Text = dgvr.Cells[0].Value.ToString();

12: 怎么使子窗体和主窗体之间不可以切换?

就是,主窗体点击一个东西,跳出子窗体,在子窗体没有关闭之前,主窗体不可以操作.

Form f = new From();

f.ShowDialog(); //这个的就是主窗体和子窗体之间不可以切换

f.Show(); //这个是两个窗体同时存在,也可以切换

13 : Application.Exit (); 和 f . Close() 的区别??

application,exit() 是整个程序结束

f . close() ; 是这个窗体结束

14 : 怎么选出表格中为’空闲’ 的那一行信息?

private void checkBox1_CheckedChanged(object sender, EventArgs e)

{

//如果选中只显示空闲的复选框执行以下操作

if (checkBox1.Checked)

{

//这里的dataGridView1.RowCount是会变化的,所以循环次数不确定,要注意

//这里要是用i++这种for循环·,会出现错误, 注意

for (int i = dataGridView1.RowCount - 2; i > 0; i--)

{

#region 不?显?示?不?为a空?闲D状痢?态?的?房?间?

//如果不是空闲的则删除

if (!("空闲".Equals(dataGridView1.Rows[i].Cells[4].Value.ToString())))

{

//每remove一次,rowCount就减少1,这里就出现问题了,

//当你继续remove的时候就会出错

dataGridView1.Rows.Remove(dataGridView1.Rows[i]);

}

#endregion

}

}

else

{

this.roomTableAdapter1.Fill(this.hotelManagementSystemDataSet1.Room);

}

}

这里要注意的只有一个那就是: 如果对每一行循环用i++这个类型的,就会出错,因为每remove一次, 表格的中行数 RowCount 就会减少,循环的次数就会减少,这样就会出现错误.

当然你先把RowCount存在一个变量里面也是错的,因为等下你要继续remove一行,则会出现越界异常

15 : 怎么对数据库进行增删改?

public int AddToDb(string rid,string cid,string rpeople)

{

SqlConnection con = null;

try

{

con = new SqlConnection();

//连接数据库的固定代码使用window用户登录SQL,这个当然也可以用sql用户登入的

con.ConnectionString = "Data Source=(local);Initial Catalog=HotelManagementSystem ; Integrated Security = True;";

//conn.ConnectionString = "Data Source=(local);Database=HotelManagementSystem ;Uid=sa;Pwd="; //使用SQL用户sa登入的

if (con.State == System.Data.ConnectionState.Closed)

{

con.Open();

// MessageBox.Show("数据库连接成功");

string sql = string.Format("insert into CustomerRoom(RId,CId,RPeople) values({0},{1},{2}) ", rid, cid, rpeople);

SqlCommand cmd = new SqlCommand(sql, con);

//SqlDataReader dr = cmd.ExecuteReader(); //这个是SQL查询的

int flag = cmd.ExecuteNonQuery(); //这个是增删改的SQL语句

return flag;

}

}

catch (Exception)

{

MessageBox.Show("数据库连接失败");

}

finally

{

con.Close();

}

return 0;

}

记住 SqlConnection 这个类要导入一个using System.Data.SqlClient;这个命名空间才可以用.

16 : 怎么从登录窗口跳转到另外一个窗口,而让子窗体关闭,程序也跟着关闭?

刚开始把所以的模块连接起来的时候,那个登录窗口跳转到主界面,我是用Login.hide();而主窗体用的是MainForm.show();显示的,但是当我关闭主窗体的时候,程序还在运行..这个是一个大问题..

经过我查询资料,我从一个博客里面找到了解决方法:

1,在Programs.cs 添加以下代码

意思就是让Login先以对话框的形式显示出来,然后判断对话框的结果是否为OK?

是不是为OK?这个要在Login这个界面的那个登录按钮的监听里里面设置..

Login login = new Login();

if (login.ShowDialog() == DialogResult.OK)

{

Application.Run(new Main());

}

2.在Login界面的那个登录按钮代码里面添加

就是就登录成功后的哪里添加这个代码....

this.DialogResult = DialogResult.OK;

this.Close();

17 : 怎么为DataGridView的表格赋值,用自己的代码而不是用那边直接选择的数据源??

//新建定数据源(DataTable 继承自ListSoure)

DataTable dt = new DataTable();

//添加列

dt.Columns.Add(new DataColumn("1"));

dt.Columns.Add(new DataColumn("2"));

dt.Columns.Add(new DataColumn("3"));

//添加行

DataRow dr = dt.NewRow();

dr[0] = DateTime.Now.ToString();

dr[1] = "时间";

dr[2] = "仲夏";

dt.Rows.Add(dr);

dataGridView1.DataSource = dt;

这里的内容主要就是先创建个DataTable的实例,然后再添加列,然后再添加行,然后再把DataGridView.datasource设置为这个Datatable对象就可以了

18 : 怎么把从数据库中查询到的数据赋值到DataGridView中去??

这个的话要结合17知识点的内容,把数据库查询到的数据放进去,具体代码如下

DataTable dt = new DataTable();

//添加列

dt.Columns.Add(new DataColumn("Name"));

dt.Columns.Add(new DataColumn("Psw"));

SqlConnection conn = null;

try

{

conn = new SqlConnection();

conn.ConnectionString = "Data Source=(local);Initial Catalog=S_T1;Integrated Security=True;"; //使用window用户登入

if (conn.State == ConnectionState.Closed)

{

conn.Open();

string sql = "select * from StorageUser";

SqlCommand cmd = new SqlCommand(sql, conn); //创建一个执行SQL的命令对象

SqlDataReader sdr = cmd.ExecuteReader();

while (sdr.Read())

{

string name = sdr.GetString(0);

string psw = sdr.GetString(1);

//添加行

DataRow dr = dt.NewRow();

dr[0] = name;

dr[1] = psw;

dt.Rows.Add(dr);

}

dataGridView1.DataSource = dt;

}

}

catch (Exception e1)

{

MessageBox.Show(e1.ToString());

}

finally

{

conn.Close(); //关闭数库 因为就像电话一样,你正在通话中,其他电话打不进来.数据库也是一样

}

主要就是那几句有字符底纹的代码,其他的都是查询的,很简单,

但是有一个问题: 就是如果把查询数据库查询到的数据放在SqlDataReader里面返回,然后另外一个函数,调用查询SQL的那个函数,得到SqlDataReader对象,在查询会出现错误.

理由好像是,SQL连接关闭后,这个不能用.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: