【C#】Timer、窗体大小和屏幕大小
2015-12-01 17:09
363 查看
这也是很简单的事情,窗体大小能取就能用,屏幕大小用Screen.PrimaryScreen.Bounds.Width/Height;。在C#中的Timer其实与VB.NET的Timer差不多,《【Visual Basic】计时器与窗体屏幕尺寸的取法》(点击打开链接),下面用一个小例子还说明这个问题:
如图,在一个窗体中有两个按钮,点击可以之后,窗体就开始横向增加大小,增大到当前屏幕大小的1/2就会开始缩小,直到宽度变成当前屏幕的1/4,则又开始重新变大。
窗体的布局如下图所示:
先把Form1的MaximizeBox与MinimizeBox变成False。
之后拖入两个按钮,利用对其工具将其摆好,如《【C#】用组件的Anchor属性解决最大化组件的缩放问题》(点击打开链接)一样,将其Anchor从Top,left修改成Top,left,right,让宽度的变化自己随窗体的大小变化而变化。
最后拖入本文的主角——Timer,可以看到,这个timer是不占位置的,相当于一个在这个窗体内的小线程。
之后,点击这个Timer、两个Button,修改成如下的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Timer
{
public partial class Form1 : Form
{
private bool flag = true;//用来指导这个窗体是增加还是减少
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
if (flag)
{
this.Width += 4;//窗体宽度+4
if (this.Width > Screen.PrimaryScreen.Bounds.Width / 2)//如果窗体的宽度达屏幕的1/2
{
flag = false;//则窗体开始减少
}
}
else
{
this.Width -= 4;
if (this.Width < Screen.PrimaryScreen.Bounds.Width / 4)
{
flag = true;
}
}
}
//计时器开始为不开启状态
//开始计时器
private void button1_Click(object sender, EventArgs e)
{
timer1.Interval = 50;//计时器的代码,每50毫秒也就是0.05s运行一次
timer1.Enabled = true;
}
//关闭计时器
private void button2_Click(object sender, EventArgs e)
{
timer1.Enabled = false;
}
}
}
如图,在一个窗体中有两个按钮,点击可以之后,窗体就开始横向增加大小,增大到当前屏幕大小的1/2就会开始缩小,直到宽度变成当前屏幕的1/4,则又开始重新变大。
窗体的布局如下图所示:
先把Form1的MaximizeBox与MinimizeBox变成False。
之后拖入两个按钮,利用对其工具将其摆好,如《【C#】用组件的Anchor属性解决最大化组件的缩放问题》(点击打开链接)一样,将其Anchor从Top,left修改成Top,left,right,让宽度的变化自己随窗体的大小变化而变化。
最后拖入本文的主角——Timer,可以看到,这个timer是不占位置的,相当于一个在这个窗体内的小线程。
之后,点击这个Timer、两个Button,修改成如下的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace Timer
{
public partial class Form1 : Form
{
private bool flag = true;//用来指导这个窗体是增加还是减少
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
if (flag)
{
this.Width += 4;//窗体宽度+4
if (this.Width > Screen.PrimaryScreen.Bounds.Width / 2)//如果窗体的宽度达屏幕的1/2
{
flag = false;//则窗体开始减少
}
}
else
{
this.Width -= 4;
if (this.Width < Screen.PrimaryScreen.Bounds.Width / 4)
{
flag = true;
}
}
}
//计时器开始为不开启状态
//开始计时器
private void button1_Click(object sender, EventArgs e)
{
timer1.Interval = 50;//计时器的代码,每50毫秒也就是0.05s运行一次
timer1.Enabled = true;
}
//关闭计时器
private void button2_Click(object sender, EventArgs e)
{
timer1.Enabled = false;
}
}
}
相关文章推荐
- c#的构造函数及构造函数的调用
- C#中获取当前时间:System.DateTime.Now.ToString()用法
- C#正则验证字符串是否全是数字
- C# using 三种使用方式
- c# 弹出带返回值的对话框
- c# 获取桌面路径
- c# 获取桌面路径
- c# windows服务 一个进程 多个服务的使用
- 字符串批量替换工具,R资源id动态获取
- 第7篇 WPF C# 怎样定义类及其接口
- C# 实现URLDownloadToFile回调
- 三种C#.net生成静态页面的方法
- c# windows服务 一个进程 多个服务的使用
- .NET(C#):await返回Task的async方法
- C#_Assembly-Reflection_程序集与反射 练习<一> 记事本插件编写
- [EmguCV][000] 基于C#搭建 Emgu CV 开发环境
- C#接口实例
- C#抽象类和抽象方法
- C#_Assembly-Reflection_程序集与反射
- C#程序调用cmd.exe执行命令