注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

C# Windows编程入门(四)  

2010-12-14 09:56:49|  分类: C# & .NET |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1.4 调整窗体尺寸

       这里想让窗口尺寸发生变化后,图片框也能自动地跟随变化。效果图如下:

C Windows编程入门(四) - Castor - 趁年轻,多折腾~~

 

实现这一行为需要了解两个属性:AnchorDock

完成的代码如下:

using System;

using System.Drawing;

using System.Windows.Forms;

namespace MyNamespace

{

    public class MyForm : System.Windows.Forms.Form

    {

        private Button btnLoad;

        private PictureBox pboxPhoto;

        public MyForm()

        {

            // Constructor

            this.Text = "Hello Form 1.4";

            this.MinimumSize = new Size(200, 200);

            // Create and configure the Button

            btnLoad = new Button();

            btnLoad.Text = "&Load";

            btnLoad.Left = 10;

            btnLoad.Top = 10;

            btnLoad.Click += new System.EventHandler(this.OnLoadClick);

            btnLoad.Anchor = AnchorStyles.Top | AnchorStyles.Left;

            // Create and configure the PictureBox

            pboxPhoto = new PictureBox();

            pboxPhoto.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;

            pboxPhoto.Width = this.Width / 2;

            pboxPhoto.Height = this.Height / 2;

            pboxPhoto.Left = (this.Width - pboxPhoto.Width) / 2;

            pboxPhoto.Top = (this.Height - pboxPhoto.Height) / 2;

            pboxPhoto.SizeMode = PictureBoxSizeMode.StretchImage;

            pboxPhoto.Anchor = AnchorStyles.Top | AnchorStyles.Bottom| AnchorStyles.Left | AnchorStyles.Right;

            // Add our new controls to the Form

            this.Controls.Add(btnLoad);

            this.Controls.Add(pboxPhoto);

        }

        protected void OnLoadClick(object sender, System.EventArgs e)

        {

            OpenFileDialog dlg = new OpenFileDialog();

            dlg.Title = "Open Photo";

            dlg.Filter = "jpg files (*.jpg)|*.jpg|All files (*.*)|*.*";

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

            {

                pboxPhoto.Image = new Bitmap(dlg.OpenFile());

            }

            dlg.Dispose();

        }

        public static void Main()

        {

            Application.Run(new MyForm());

        }

    }

}

编译之后运行即可得到前面展示的效果。

相比较前面的代码,并没有多大的变化,这里主要说明一下有变动的代码。

       语句this.MinimumSize = new Size(200,200);设置了窗体的最小尺寸,这个不做过多的解释。这里将补充其他一些控制外观的属性。

属性

类型

描述

ControlBox

bool

是否显示控制框

DesktopBounds

Rectangle

窗体在桌面的区域

DesktopLocation

Point

窗体左上角的位置

FormBorderStyle

FormBorderStyle

窗体边界样式

Icon

Icon

显示窗体的图标,前提是ControlBoxtrue

MaximizedBounds

Rectangle

最大化时的区域

MaximizeBox

bool

是否显示最大化按钮,前提是ControlBoxtrue

MaximumSize

Size

窗体尺寸能变化的最大值

MinimizeBox

Bool

是否显示最小化按钮,前提是ControlBoxtrue

MinimumSize

Size

窗体尺寸能变化的最小值

ShowInTaskBar

bool

是否显示在任务栏中

Anchor(锚点)属性

语句btnLoad.Anchor = AnchorStyles.Top | AnchorStyles.Left;将按钮的水平位置和垂直位置固定了该控件与窗体边界的值。具体到本程序中就是(1010)同样的:

pboxPhoto.Anchor = AnchorStyles.Top | AnchorStyles.Bottom| AnchorStyles.Left | AnchorStyles.Right;

则有点不同,因为前面设置的是:

pboxPhoto.Left = (this.Width - pboxPhoto.Width) / 2;   

pboxPhoto.Top = (this.Height - pboxPhoto.Height) / 2;

他们是动态变化的。总能保证在窗体的正中央。所有的.NET Framework控件都支持Anchor属性。除了图片框使用的四个之外,还有一个AnchorStyleNone

Dock(停靠)属性

Dock属性指明了控件的停靠方式,即使窗体发生变化,这种停靠方式也不会发生改变。DockStyle有六个,即使BottomFillLeftNoneRightTop,如果把代码中PictureBoxAnchor属性换为DockFill,即:

pboxPhoto.Dock = DockStyle.Fill;

编译运行后,将会图片将会加载在整个窗体上,实际上是图片框扩充到了整个窗体,然后图片又是随着图片框大小发生改变的。

另外,如果修改this.Control.Add添加控件的顺序,按钮将会被图片框给遮住。所以添加控件也要注意顺序。

  评论这张
 
阅读(886)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016