您的位置:首页 > 其它

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:可以控制窗体是否可以有控件/菜单栏
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: