《C#入门经典(中文第四版)》第二部分Winform窗体学习笔记

---------------------------------------------------------------------------------------------------------

A0 ………… 通用
A1 ………… Form 类
A2 ………… Control 类
A3 ………… MessageBox 类
A4 ………… Button 类
A5 ………… Label 类
      LinkLabel 类
A6 ………… TextBox 类
A7 ………… RichTextBox 类
A8 ………… ListBox 类
A9 ………… CheckedListBox 类

G1 ………… ComboBox 类
G2 ………… RadioButton 类
G3 ………… CheckBox 类
G4 ………… TabControl 类
G5 ………… PictureBox 类
G6 ………… Panel 类
G7 ………… MenuStrip 类
G8 ………… ToolStripMenuItem 类
G9 ………… ToolStrip 类
G10 ………… ToolTip 类

U1 ………… ToolStripButton 类
U2 ………… StatusStrip 类
U3 ………… Timer 类
U4 ………… ProgressBar 类
U5 ………… OpenFileDialog 类
U6 ………… SaveFileDialog 类

---------------------------------------------------------------------------------------------------------

            ╔════════╗
╠════╣    第A0个    ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● 通用:

1. 按Ctrl键同时拉动控件,可以复制一个控件。

2. 在Form上点右键》查看代码,或是按F7。F4显示属性。

3. 实现文件夹打开显示功能,类似右键》打开所在文件夹。
  System.Diagnostics命名空间:
    Process类提供对本地和远程进程的访问并使您能够启动和停止本地系统进程。

1. 用Explorer.exe打开文件夹:
  System.Diagnostics.Process.Start("Explorer.exe",@"D:\DOCUMENTS\");
  System.Diagnostics.Process.Start("Explorer.exe",@"D:\DOCUMENTS");

2. 用notepad.exe打开记事本:
  System.Diagnostics.Process.Start("notepad.exe",@"F:\Desktop\1.txt");

3. 用Word的快捷方式打开Word文件:
  System.Diagnostics.Process.Start(@"F:\Desktop\Word 2010", @"F:\Desktop\1.docx");

4. 用Firefox打开网址:www.baidu.com:
  System.Diagnostics.Process.Start(@"C:\Program Files (x86)\Mozilla Firefox\firefox.exe", "www.baidu.com");

4. 建立事件模板,然后调用:由于事件的监视及管理是由Application对象进行的,程序员不需要知道用户何时响应事件或者是响应了什么事件,只需要为事件添加响应方法即可。添加方法”+=“,取消方法”-=“。参数sender为事件发出者;e为事件的附加数据,事件不同,e也不同。

        public Form1()
{
InitializeComponent();
textBox2.MouseMove += new MouseEventHandler(textBox_MouseMove); //调用事先建立的模板
textBox3.MouseMove += new MouseEventHandler(textBox_MouseMove); //四个TextBox可以实现相同的功能
textBox4.MouseMove += new MouseEventHandler(textBox_MouseMove); //通过双击Tab键可以自动实现后半部分
textBox5.MouseMove += new MouseEventHandler(textBox_MouseMove);
}
private void textBox_MouseMove(object sender, MouseEventArgs e) //建立事件模板
{
TextBox tb = sender as TextBox;
tb.BackColor = Color.Red;
}
View Code - TextBox_KeyPress 只允许数字输入
        public Form1()
{
InitializeComponent();
textBox1.KeyPress += new KeyPressEventHandler(textBox_KeyPress); //单击tab键出现一行
textBox2.KeyPress += new KeyPressEventHandler(textBox_KeyPress); //双击tab键出现N行
textBox3.KeyPress += new KeyPressEventHandler(textBox_KeyPress);
textBox4.KeyPress += new KeyPressEventHandler(textBox_KeyPress);
}

private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar < '0' || e.KeyChar > '9') && e.KeyChar != 8 && e.KeyChar != 13)
{
e.Handled = true;
}
}

5. 用代码在Form中写控件,同时可以编写控件数组,例如:

            Label[] lbs = new Label[5];     //建立标签控件数组
for (int i = 0; i < lbs.Length; i++)
{
lbs[i] = new Label(); //在声明下Label类
this.Controls.Add(lbs[i]); //将Label加到控件集中
lbs[i].Left = 14;
lbs[i].Top = 30 * i + 14; //设置控件的位置
lbs[i].Width = 400; //设置控件的宽度
}

        首先用Label建立数组,接下来遍历数组,给数组的每个要素声明Label,接下来用Controls的Add方法将用代码写的控件添加到控件集中,同时设置控件的位置和长宽。

6. 用代码执行事件:首先是双击控件,生成一个button1_Click(object sender,EventArgs e)的函数,通过代码直接调用这个函数,既可以调用这个事件,说到底就是调用函数。

        private void button1_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.URL = musicPath + @"music\1.mp3";
}

private void timer1_Tick(object sender, EventArgs e)
{
button1_Click(button1, e); //通过代码调用按钮单击事件,其他事件调用是类似的!
}      

---------------------------------------------------------------------------------------------------------

            ╔════════╗
╠════╣    第A1个    ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● Form 类

1. Form 属性:

  • TopMost:获取或设置一个值,指示该窗体是否应显示为最顶层窗体。
  • OwnedForms:获取 Form 对象的数组,这些对象表示此窗体拥有的所有窗体。(先要用AddOwnedForm()方法来添加窗体。)
    View Code - 实现跨窗体关闭窗体
            public void button1_Click(object sender, EventArgs e)
    {
    Form1 frm1 = new Form1();
    if (button1.Text == "开始")
    {
    this.AddOwnedForm(frm1); //将窗体加入到OwnedForm里面
    frm1.Show();
    button1.Text = "停止";
    }
    else
    {
    foreach (Form frm in this.OwnedForms)
    {
    frm.Close(); //将所有OwnedForms都删掉
    }
    button1.Text = "开始";
    }
    }
  • AcceptButton:获取或设置当用户按 Enter 键时所单击的窗体上的按钮。
  • CancelButton:获取或设置当用户按 Esc 键时单击的按钮控件。
  • MaximizeBox:获取或设置一个值,该值指示是否在窗体的标题栏中显示“最小化”按钮。(bool)
  • MinimizeBox:获取或设置一个值,该值指示是否在窗体的标题栏中显示“最大化”按钮。(bool)
  • MaximumSize:获取窗体可调整到的最大大小。
  • MinimumSize:获取窗体可调整到的最小大小。
  • ClientSize:获取或设置窗体工作区的大小。窗体工作区的大小是除边框和标题栏外窗体的大小。窗体的工作区是窗体内可放置控件的区域。
  • Size:获取或设置窗体的大小。包括外边框!ClientSize要比Size表示的范围小一点。
    • Width:
    • Height:
  • Opacity:获取或设置窗体的不透明度级别。默认值是1,为不透明,0为完全看不见。
  • IsMdiContainer:获取或设置一个值,该值指示窗体是否为多文档界面 (MDI) 子窗体的容器。(bool)
  • MdiParent:获取或设置此窗体的当前多文档界面 (MDI) 父窗体。(子窗体显示在父窗体内部)
  • MdiChildren:获取窗体的数组,这些窗体表示以此窗体作为父级的多文档界面 (MDI) 子窗体。
    • Length:获取子窗体的个数。
  • ActiveMdiChild:获取当前活动的多文档界面 (MDI) 子窗口。
  • BackgroundImage:获取或设置在控件中显示的背景图像。 
    • Size:获取图片的大小。
  • FormBorderStyle:获取或设置窗体的边框样式。
    • None:无边框。
    • FixedSingle:固定的单行边框。
    • Fixed3D:固定的三维边框。
    • FixedDialog:固定的对话框样式的粗边框。
    • Sizable:可调整大小的边框。
    • FixedToolWIndow:
    • SizableToolWindow:
  • WindowState:获取或设置窗体的窗口状态。
    • Normal,Minimized,Maximized
  • KeyPreview:获取或设置一个值,该值指示在将键事件传递到具有焦点的控件前,窗体是否将接收此键事件。 如果窗体将接收所有键事件,则为 true;如果窗体上当前选定控件接收键事件,则为 false。默认为 false

2. Form 方法:

  • Activate:激活窗体并给予它焦点。
  • AddOwnedForm:向此窗体添加附属窗体。
  • Close:关闭窗体。
  • LayoutMdi:在 MDI 父窗体内排列多文档界面 (MDI) 子窗体。MdiLayout 枚举
    • Cascade所有 MDI 子窗口均层叠在 MDI 父窗体的工作区内。
    • TileHorizontal所有 MDI 子窗口均水平平铺在 MDI 父窗体的工作区内。
    • TileVertical:所有 MDI 子窗口均垂直平铺在 MDI 父窗体的工作区内。
    • ArrangeIcons:所有 MDI 子图标均排列在 MDI 父窗体的工作区内。
  • Hide:对用户隐藏控件。
  • Show:显示窗体。两个窗体都可以操作!
  • ShowDialog:将窗体显示为模式对话框。只能操作对话框窗体!
      通过在 Load 事件中修改 Location 可以改变显示的位置!
  • Focus:用于激活窗体并给予其焦点。
  • SetBounds(int x, int y, int width, int height):x和y为窗体位置坐标,width为窗体宽度,height为窗体高度。
  • SetDesktopLocation(int x, int y):以桌面坐标设置窗体的位置。
  • SetDesktopBounds(int x, int y, int width, int height):以桌面坐标设置窗体的边界。

3. Form 事件:

  • Load:第一次显示窗体前发生。
  • Move:窗体移动的时候触发。
  • Activated:窗体获得焦点(被激活)时引发。
  • Deactivate:窗体失去焦点(未激活)时引发。
  • FormClosing:在关闭窗体时发生。
    其中 e 有两个重要的属性!
      Cancel:
            private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
    DialogResult a;
    a = MessageBox.Show("你真的要关闭吗(⊙_⊙?)", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
    if (a == DialogResult.No) //DialogResult枚举的值, 根据上面MessageBox中的按钮来定
    {
    e.Cancel = true; //单击No, 取消关闭.
    }
    }

相关文章:

  • 2021-06-29
  • 2021-08-26
  • 2021-10-19
  • 2022-01-08
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-07
  • 2021-12-22
  • 2022-12-23
相关资源
相似解决方案