WindowsForm多窗体、多窗体传值、控件数据绑定--2016年12月8日
多窗体
Show
Form1 f1 = new Form1(); f1.Show();
ShowDialog--在父窗体之上
Form1 f1 = new Form1(); f1.ShowDialog();
2者具体区别如下:
1.在调用Form.Show方法后,Show方法后面的代码会立即执行
2.在调用Form.ShowDialog方法后,直到关闭对话框后,才执行此方法后面的代码
3.当窗体显示为模式窗体时,单击“关闭”按钮会隐藏窗体,并将DialogResult属性设置为DialogResult.Cancel
与无模式窗体不同,当用户单击对话框的关闭窗体按钮或设置DialogResult属性的值时,不调用窗体的Close方法
实际上是把窗体的Visible属性赋值为false,隐藏窗体了
这样隐藏的窗体是可以重新显示,而不用创建该对话框的新实例
因为未关闭窗体,所以在应用程序不再需要该窗体时,请调用该窗体的Dispose方法
Owner子窗口在父窗口之上,父窗口可操作
Form1 f1 = new Form1(); f1.Owner = this; f1.Show();
多窗口传值
方法一:通过为窗体类写属性来传递值
(1),在被传递值的窗体(这里是Form2)类里面写属性
private string str;//定义的私有变量
public string STR//为窗体Form2定义的属性
{
get //读
{ return str;
}
set//写
{
str = value;
}
}
(2),在Form2中把读到的属性赋给Form2中的TextBox1文本框
private void Form2_Load(object sender, EventArgs e)
{
textBox1.Text = str;
}
(3),在Form1中的Button1的Click点击事件中写如下代码
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
int a, b, sum;
if (int.TryParse(textBox1.Text, out a) && int.TryParse(textBox2.Text, out b))//关于TryParse的使用方法,见补充知识。
{
sum = a + b;
frm2.STR = sum.ToString();
frm2.ShowDialog();
}
else
{
frm2.STR = "输入的为非数字型字符串";
frm2.ShowDialog();
}
}
方法二:通过为窗体类写构造函数来传值
(1),在被传递值的窗体(这里是Form2)类里面写其构造函数,注意原来的构造函数不要修改它,我们在代码块里面直接加入以下代码即可。
string str1, str2;//定义两个私有变量
public Form2(TextBox tb1, TextBox tb2)//定义构造函数,tb1和tb2对应Form1中的TextBox1和TextBox2,以便传值
{
InitializeComponent();//一定要加上。。。
str1 = tb1.Text.ToString();//取文本框值
str2 = tb2.Text.ToString();
int a, b, sum;
if (int.TryParse(str1, out a) && int.TryParse(str2, out b))//检查文本框里面的值是否可转化为int型,返回值为bool型,如果为真,则转化为整型a和b, 关于TryParse的使用方法,见补充知识。
{
int sum = a + b;
textBox1.Text = Convert.ToString(sum);
}
else
{
textBox1.Text = "输入的为非数字型字符串";
}
}
(2),在Form1中的Button1的Click事件中写如下代码
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2(textBox1, textBox2);
frm2.ShowDialog();
}
控件数据绑定
可绑定的控件名.DataSource = 数据源;
可绑定的控件名.DisplayMember = "要显示的数据源列名";
可绑定的控件名.ValueMember = "要对应显示的数据源列名";
WindowsForm多窗体、多窗体传值、控件数据绑定--2016年12月8日的更多相关文章
- WindowsForm公共控件--2016年12月5日
Button text:修改按钮显示的文字 CheckBox Checked:是否选中 CheckedListBox checkedListBox.Items.Add(显示的值,初始选中状态); ch ...
- WebForm控件--2016年12月29日
简单控件 1.Label => <span id="Label1">Label1</span> 2.Literal => Text 填 ...
- ListView控件--2016年12月9日
ListView属性 ListView 名称 说明 AccessKey 重写 WebControl.AccessKey 属性. 不支持将此属性设置 ListView 控件.(覆盖 WebContr ...
- WindowsForm菜单工具栏--2016年12月6日
ContextMenuStrip 添加控件后可在其他空间属性中进行绑定 MenuStrip 设置热键:在编辑的时候输入(&F) 设置快捷键:选中菜单项--右键属性--S ...
- MDI窗体容器--2016年12月15日
MDI窗体容器 多文档界面(Multiple-Document Interface)简称MDI窗体.MDI窗体用于同时显示多个文档,每个文档显示在各自的窗口中.MDI窗体中通常有包含子菜单的窗口菜单, ...
- 关于WinForm引用WPF窗体---在Winform窗体中使用WPF控件
项目中有个界面展示用WPF实现起来比较简单,并且能提供更酷炫的效果,但是在WinForm中使用WPF窗体出现了问题,在网上找了一下有些人说Winform不能引用WPF的窗体,我就很纳闷,Win32都能 ...
- WinForm 鼠标进入移开窗体事件,因子控件导致的误触发
/// <summary> /// 重写OnControlAdded方法,为每个子控件添加MouseLeave事件 /// </summary> /// <param n ...
- (转)C# WinForm中 获得当前鼠标所在控件 或 将窗体中鼠标所在控件名显示在窗体标题上
原文地址:http://www.cnblogs.com/08shiyan/archive/2011/04/14/2015758.html /********************** * 课题:将窗 ...
- winfrom窗体中嵌套WPF控件
前言 本文主要介绍如何在winfrom窗体中嵌套WPF控件, 一来是自己记录一下,而来希望能对有需要的朋友提供实现思路. 如有错误请指出...下面进入正题... -1.前期准备 准备一个建立好的win ...
随机推荐
- [板子]ISAP
ISAP求最大流,敲了一发板子,无压行,教程略去.转载请随意. #include <cstdio> #include <cstring> #include <algori ...
- Java jdbc访问sqlserver,oracle数据库
1.JDBC访问Oracle数据库 public class Jdbc_Oracle { // 静态代码块,只会执行一次,类似C#静态构造方法 static { try { // 加载数据库驱动一次 ...
- java之并发编程线程池的学习
如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间. java.uitl.concurrent.Thre ...
- 在SpringMVC中使用@SessionAttributes和@ModelAttribute将数据存储在session域中
今天在我的springMVC项目--图书管理系统中,希望在登录时将登录的Users存在session中,开始是准备在controller中使用Servlet API中的对象,可是一直无法引用,不知道为 ...
- border:none 和border:0区别差异
border:none与border:0的区别体现为两点:一是理论上的性能差异,二是浏览器兼容性的差异. 性能差异: [border:0;]把border设为“0”像素效果等于border-width ...
- 【JavaWeb】SSM+SpringSecurity+EhCache+JCaptcha 完整Web基础框架(六)
Showings 我个人的项目,当前不断地在更新. 我希望做成一个好项目,同时,也是在锻炼自己的技术. 在项目中发现问题,学习知识,是比较可取的一条路子. 这样学习到的知识,虽然分散,但是都很实用,而 ...
- delphi 2010与delphi XE破解版的冲突
在系统中同时安装了Dephi 2010LITE版与Delphi XE lite后,总是会有一个有问题 是因为两者都是读取C:\ProgramData\Embarcadero目录下的license文件, ...
- [教程] [授权翻译] 使用补丁修改DSDT/SSDT [DSDT/SSDT综合教程]
[教程] [授权翻译] 使用补丁修改DSDT/SSDT [DSDT/SSDT综合教程] http://bbs.pcbeta.com/viewthread-1571455-1-1.html [教程] [ ...
- mac机快捷键操作
1. 屏幕最大和缩小:command+ctrl +f 2.切换应用:comand+tab, 3.大小写转换:comand + 空格 4.切换到下/上一个标签页:同时按 ⌘-Option 和向右/左箭头 ...
- the import android cannot be resolved
1.先更新SDK 2.从Window选择SDK并且Apply 3.从Project选择Android的版本