winforms小项目技术
2016-03-21 10:43
302 查看
1.在做多文档窗体MDI中多个界面切换用到的技术
不用复杂的if else 判断,下面的技术可以化繁为简:
private void tsbMemberConsume_click(object sender,EventArgs
e)
{
foreach(Form form in Application.openForms)
{
if(form.Name=="FormName")
//managerForm.WindowState =
FormWindowState.Maximized;
form.Active();
return;
}
//for循环中的Application.openForms的意思是获取应用程序中打开窗体的集合。如果一个窗体还没有被打开,那么这个集合中就不会有他,那么执行下面的操作,如果已经打开了,让这个窗体获得激活,并return不在创建。
FormName form=new FormName();
form.MdiParent=this;
form.show();
}
2.MDI多文档窗体是否可以每次都打开一个窗体呢?
3.关于关闭窗体时弹出对话框:
(1)关闭总的关闭按钮
DialogResult result =
MessageBox.Show("确定要关闭窗口?", "提示窗口", MessageBoxButtons.OKCancel,
MessageBoxIcon.Information);
if (result == DialogResult.OK)
{
e.Cancel = false;
}
if(result==DialogResult.Cancel)
{
e.Cancel = true;
}
(2)关闭某一个按钮
private void toolStripButton1_Click(object sender, EventArgs
e)
{
DialogResult result = MessageBox.Show("确定要关闭窗口?", "提示窗口",
MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
if (result == DialogResult.OK)
{
this.Dispose();
this.Close();
}
if (result == DialogResult.Cancel)
{
return;
}
}
4,一些GridView的属性
(1)RowHeadersVisible:指示是否显示行的标题。
(2)ScrollBars:滚动条的类型.
(3)选择一个单元格=选择一行的属性:SelectionMode:FullRowSelect
5。对于父窗体上多个子窗体的布局可以这样:
private void tsbMemberConsume_Click(object
sender, EventArgs e)
{
foreach (Form form in Application.OpenForms)
{
if (form.Name == "MemberConsume")
{
pnlTemp.Controls.Add(form);
form.BringToFront();
return;
}
}
memberConsumeForm = new MemberConsume();
memberConsumeForm.WindowState = FormWindowState.Maximized;
memberConsumeForm.TopLevel = false;
pnlTemp.Controls.Add(memberConsumeForm);
memberConsumeForm.Show();
}
6.两个窗体,点击第一个窗体的按钮,弹出模式窗体,保存,第一个窗体的dateGridView刷新。
(1)把第二个窗体的保存和取消按钮的DialoResult分别设置成OK和Cancel
(2)在子窗体写代码
(3)在父窗体写代码
WareSortAdd wareSortAdd = new
WareSortAdd();
if (wareSortAdd.ShowDialog() == DialogResult.OK)
{
GetTable();
}
//查询表中的数据
public void GetTable()
{
string sql = "select * from wareSort";
DataTable dt = WareManager.SelectWareSort(sql);
this.dgvWareSort.DataSource =
dt;
}
7窗体间传值技术
8.WinForms中的Combox绑定DateTable的问题:
combox的SelectedIndexChanged事件,在datasouce指定的时候就被触发了,这时候数据还没有绑定好,自然会报错.
我认为这是不合理的.SelectedIndexChanged不应该在绑定数据的中间被触发.
我最后解决办法是设置了一个标志符isLoaded,bool类型,在填充方法完毕后,设为true.允许SelectedIndexChanged被触发.
代码如下:
/// <summary>
/// 绑定cmbdoc数据的方法
/// </summary>
private void FillCmbDoc()
{
//新建文档类的集合
Class.ClassDocCollection items1 = new
DocAddin.Class.ClassDocCollection();
//提取所有文档数据,填充到集合
items1.FillInAllDoc();
cmbDoc.DataSource = items1;
cmbDoc.DisplayMember = "S名称";
cmbDoc.ValueMember = "I编号";
//设置标志符,true说明该combox已经绑定好了,允许SelectedIndexChanged事件被触发了.
isLoaded = true;
}
9.在窗体1中点击按钮弹出一个模式窗体2,然后点击窗体2中的保存按钮,如果保存成功,关闭模式窗体,同时刷新DataGriedView,如果保存失败,保持模式窗体:
(1)在窗体2中,把保存按钮的可访问性设置为public,它的Click事件这么写:
public void Click()
{
int num=操作数据库的代码
if(num>0)
{
保存按钮.tag="OK";
this.Close();
}
}
public void 窗体1的Click()
{
窗体2.showDialog();
if(窗体2.保存按钮.tag=="OK")
{
刷新DataGridView的代码;
}
}
10.下拉列表Combox的属性:DropDownStyle决定下拉框是否可以输入。
11.用打开文件控件,打开一个图片文件,为界面的控件设置与该图片的关系:
(1)首先是拖入一个打开文件的控件:openFileDialog1
(2)然后在按钮的点击按钮中写入相应的事件:
DialogResult result=this.openFileDialog();
if(result==DialogResult.OK)
{
string
fileName=this.openFileDialog1.FileName;//对话框选中哪个文件,这个对话框就会包含该文件的字符串名。
try{
this.pictrueBox1.BackgroundImage=Image.FromFile(fileName);//从指定的文件中创建Image.
}catch{return;}
}
12.窗体的样式:
ControlBox:可以控制窗体是否可以有控件/菜单栏
不用复杂的if else 判断,下面的技术可以化繁为简:
private void tsbMemberConsume_click(object sender,EventArgs
e)
{
foreach(Form form in Application.openForms)
{
if(form.Name=="FormName")
//managerForm.WindowState =
FormWindowState.Maximized;
form.Active();
return;
}
//for循环中的Application.openForms的意思是获取应用程序中打开窗体的集合。如果一个窗体还没有被打开,那么这个集合中就不会有他,那么执行下面的操作,如果已经打开了,让这个窗体获得激活,并return不在创建。
FormName form=new FormName();
form.MdiParent=this;
form.show();
}
2.MDI多文档窗体是否可以每次都打开一个窗体呢?
3.关于关闭窗体时弹出对话框:
(1)关闭总的关闭按钮
DialogResult result =
MessageBox.Show("确定要关闭窗口?", "提示窗口", MessageBoxButtons.OKCancel,
MessageBoxIcon.Information);
if (result == DialogResult.OK)
{
e.Cancel = false;
}
if(result==DialogResult.Cancel)
{
e.Cancel = true;
}
(2)关闭某一个按钮
private void toolStripButton1_Click(object sender, EventArgs
e)
{
DialogResult result = MessageBox.Show("确定要关闭窗口?", "提示窗口",
MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
if (result == DialogResult.OK)
{
this.Dispose();
this.Close();
}
if (result == DialogResult.Cancel)
{
return;
}
}
4,一些GridView的属性
(1)RowHeadersVisible:指示是否显示行的标题。
(2)ScrollBars:滚动条的类型.
(3)选择一个单元格=选择一行的属性:SelectionMode:FullRowSelect
5。对于父窗体上多个子窗体的布局可以这样:
private void tsbMemberConsume_Click(object
sender, EventArgs e)
{
foreach (Form form in Application.OpenForms)
{
if (form.Name == "MemberConsume")
{
pnlTemp.Controls.Add(form);
form.BringToFront();
return;
}
}
memberConsumeForm = new MemberConsume();
memberConsumeForm.WindowState = FormWindowState.Maximized;
memberConsumeForm.TopLevel = false;
pnlTemp.Controls.Add(memberConsumeForm);
memberConsumeForm.Show();
}
6.两个窗体,点击第一个窗体的按钮,弹出模式窗体,保存,第一个窗体的dateGridView刷新。
(1)把第二个窗体的保存和取消按钮的DialoResult分别设置成OK和Cancel
(2)在子窗体写代码
(3)在父窗体写代码
WareSortAdd wareSortAdd = new
WareSortAdd();
if (wareSortAdd.ShowDialog() == DialogResult.OK)
{
GetTable();
}
//查询表中的数据
public void GetTable()
{
string sql = "select * from wareSort";
DataTable dt = WareManager.SelectWareSort(sql);
this.dgvWareSort.DataSource =
dt;
}
7窗体间传值技术
8.WinForms中的Combox绑定DateTable的问题:
combox的SelectedIndexChanged事件,在datasouce指定的时候就被触发了,这时候数据还没有绑定好,自然会报错.
我认为这是不合理的.SelectedIndexChanged不应该在绑定数据的中间被触发.
我最后解决办法是设置了一个标志符isLoaded,bool类型,在填充方法完毕后,设为true.允许SelectedIndexChanged被触发.
代码如下:
/// <summary>
/// 绑定cmbdoc数据的方法
/// </summary>
private void FillCmbDoc()
{
//新建文档类的集合
Class.ClassDocCollection items1 = new
DocAddin.Class.ClassDocCollection();
//提取所有文档数据,填充到集合
items1.FillInAllDoc();
cmbDoc.DataSource = items1;
cmbDoc.DisplayMember = "S名称";
cmbDoc.ValueMember = "I编号";
//设置标志符,true说明该combox已经绑定好了,允许SelectedIndexChanged事件被触发了.
isLoaded = true;
}
9.在窗体1中点击按钮弹出一个模式窗体2,然后点击窗体2中的保存按钮,如果保存成功,关闭模式窗体,同时刷新DataGriedView,如果保存失败,保持模式窗体:
(1)在窗体2中,把保存按钮的可访问性设置为public,它的Click事件这么写:
public void Click()
{
int num=操作数据库的代码
if(num>0)
{
保存按钮.tag="OK";
this.Close();
}
}
public void 窗体1的Click()
{
窗体2.showDialog();
if(窗体2.保存按钮.tag=="OK")
{
刷新DataGridView的代码;
}
}
10.下拉列表Combox的属性:DropDownStyle决定下拉框是否可以输入。
11.用打开文件控件,打开一个图片文件,为界面的控件设置与该图片的关系:
(1)首先是拖入一个打开文件的控件:openFileDialog1
(2)然后在按钮的点击按钮中写入相应的事件:
DialogResult result=this.openFileDialog();
if(result==DialogResult.OK)
{
string
fileName=this.openFileDialog1.FileName;//对话框选中哪个文件,这个对话框就会包含该文件的字符串名。
try{
this.pictrueBox1.BackgroundImage=Image.FromFile(fileName);//从指定的文件中创建Image.
}catch{return;}
}
12.窗体的样式:
ControlBox:可以控制窗体是否可以有控件/菜单栏
相关文章推荐
- .net的一些知识
- 89. Gray Code
- C#的一些小知识
- C#的一些小知识
- 关于GridView
- 欢迎您在新浪博客安家
- Linux服务器沦陷为肉鸡的全过程实录
- iOS开发调试技巧总结(持续更新中)
- 数据库连接池实现原理
- QuickStart with RHOS(Red Hat OpenStack) Folsom Preview
- 数据类型汇总(java、php、C++)
- Java 中 == 比较的是什么?
- Java排序算法(五)--希尔排序(ShellSort)
- 聚来宝获商务部《媒体购物国家标准》制订单位 【2012-12-22 17:04:20】【来源:京华网】【字体:大 中 小】【颜色:红 绿 蓝 黑】【分享新闻】
- 浙江不老仙妻,教去皱
- 为什么某些网页打不开而别人却能打开?
- mysql_connect()与mysqli_connect()
- 70老太揉三阴嫩如少女!
- 我在CSDN有个新家
- Smarty缓存机制 $smarty->display(