C#笔记(1)窗体
1. 隐藏TabPage
在使用TabControl控件时,希望隐藏其中某个选项卡(即TabPage)。设置该TabPage的父容器为null 即可,如TabPage.Parent = null 。如需显示该TabPage,设置其父容器为对应的TabControl即可;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace WinFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
tabPage3.Parent = null;//使tabPage3不可见 }
private void button1_Click(object sender, EventArgs e)
{
tabPage3.Parent = tabControl2;//使tabPage3可见
tabPage1.Parent = null;//使tabPage1不可见
tabControl2.SelectedTab = tabPage3;//停留在tabPage3
} }
}


2. 鼠标右键菜单
1) 把ContextMenuStrip控件拖放到设计界面上(此处命名为cmMenu)。

2)右键cmMenu,点击Edit Items,添加菜单项,比如添加“打开”,“保存”等

3) 将想绑定控件(此处为Form)的ContextMenuStrip属性设置为设计的ContextMenuStrip(即cmMenu)。

运行:

3. 定时器
示例:用定时器每隔1s刷新数组,数字每次+1

代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace WinFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public int number = 0; System.Timers.Timer timer;
private void Form1_Load(object sender, EventArgs e)
{
timer = new System.Timers.Timer(1000);
timer.Elapsed += new System.Timers.ElapsedEventHandler(changeNumber);
timer.AutoReset = true;//AutoReset属性设置是否重复计时(设置为false只执行一次,设置为true可以多次执行)
timer.Enabled = false;
}
private void changeNumber(object obj, EventArgs e)
{
number++;
this.Invoke(new Action(delegate { this.textBox1.Text = number.ToString(); }));
} private void toolStripMenuItem1_click(object sender, EventArgs e)
{
timer.Start();
}
private void toolStripMenuItem2_click(object sender, EventArgs e)
{
timer.Stop();
}
}
}
namespace WinFormsApp1
{
partial class Form1
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null; /// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
} #region Windows Form Designer generated code /// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.cmMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem();
this.textBox1 = new System.Windows.Forms.TextBox();
this.cmMenu.SuspendLayout();
this.SuspendLayout();
//
// cmMenu
//
this.cmMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripMenuItem1,
this.toolStripMenuItem2});
this.cmMenu.Name = "contextMenuStrip1";
this.cmMenu.Size = new System.Drawing.Size(101, 48);
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.Size = new System.Drawing.Size(100, 22);
this.toolStripMenuItem1.Text = "开始";
this.toolStripMenuItem1.Click += new System.EventHandler(this.toolStripMenuItem1_click);
//
// toolStripMenuItem2
//
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
this.toolStripMenuItem2.Size = new System.Drawing.Size(100, 22);
this.toolStripMenuItem2.Text = "停止";
this.toolStripMenuItem2.Click += new System.EventHandler(this.toolStripMenuItem2_click);
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(149, 74);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(161, 23);
this.textBox1.TabIndex = 1;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 17F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.ContextMenuStrip = this.cmMenu;
this.Controls.Add(this.textBox1);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.cmMenu.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout(); } #endregion private System.Windows.Forms.ContextMenuStrip cmMenu;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem2;
private System.Windows.Forms.TextBox textBox1;
}
}
C#笔记(1)窗体的更多相关文章
- C#学习笔记-Windows窗体自定义初始位置
根据屏幕大小定义初始位置: (这个不是难,但是最近常常忘记,记着方便查看.) //获取当前屏幕的长和宽 int ScreenX = Screen.PrimaryScreen.Bounds.Width; ...
- C#学习笔记-Windows窗体基本功能(Login登录界面)
本菜鸟由于实习工作的原因,不得不快速接触C#语言,刚刚好又要做毕业设计,所以就通过自学的方式一举两得地完成这两件事情. 故此文字记录或代码中的各种文件名之类均是以毕业设计为模版记录的,看着不方便之处请 ...
- C#学习笔记——MDI窗体(多文档界面)
1.设置父窗体: 如果要将某个窗体设置为父窗体,只需将该窗体的IsMdiContainer属性设置为True即可. 2.设置子窗体: 通过设为某个窗体的MdiParent属性来确定该窗体是那个窗体的子 ...
- JAVA笔记__窗体类/Panel类/Toolkit类
/** * 窗体类 */ public class Main { public static void main(String[] args) { MyFrame m1 = new MyFrame() ...
- c#窗体开发
奇: 常用控件的使用(期间参杂着VS快捷键/常用设置) 快捷键:引用命名空间:shift+alt+F10 断点:F9 调试:F5 逐句调试(每行代码一次跳转):F11 逐过程调试:F10 重构提取方法 ...
- Duilib学习笔记《06》— 窗体基类WindowImpBase
在前面的例子中我们发现,窗口都是继承CWindowWnd.INotifyUI,然后重载相关函数去实现.显然,我们发现窗口的创建流程实际上都是差不多的,主要只是在OnCreate加载的配置文件不同等等… ...
- Duilib学习笔记《04》— 窗体显示
在前面已经了解了duilib控件以及界面布局相关内容,接下来就要考虑该如何将xml中描述的布局通过界面展现出来.实际上在 Duilib学习笔记<01> 中我们已经简单提到过基本的流程及元素 ...
- OpenTK学习笔记(3)-你好!窗体!
参考:http://dreamstatecoding.blogspot.com/2017/01/opengl-4-with-opentk-in-c-part-1.html http://www.cnb ...
- PyQt5学习笔记-从主窗体打开一个子窗体
PyQt5学习笔记-从主窗体打开一个子窗体 软件环境: Eric6+Python3.5+PyQt5 试验目标: 1.点击菜单项Open,打开一个子窗体 2.点击按钮Open,打开一个子窗体 主窗体设计 ...
- SQL Server Window Function 窗体函数读书笔记二 - A Detailed Look at Window Functions
这一章主要是介绍 窗体中的 Aggregate 函数, Rank 函数, Distribution 函数以及 Offset 函数. Window Aggregate 函数 Window Aggrega ...
随机推荐
- 重新点亮linux 命令树————二进制安装[十一八]
前言 简单介绍一下二进制安装 正文 wget https://openresty.org/download/openresty-1.15.8.1.tar.gz tar -zxf openresty-V ...
- keycloak~jwt的rs256签名的验证方式
接口地址 keycloak开放接口地址:/auth/realms/fabao/.well-known/openid-configuration rsa算法相关术语 RSA算法是一种非对称加密算法,其安 ...
- 基于开放共享的自主研发—MaxCompute 持续增强生态与开放性建设
简介: MaxCompute 是阿里巴巴自研的云原生数据仓库,同时也兼容大部分大数据生态系统.一个平台无法实现所有功能和解决所有问题,MaxCompute 需持续增强生态与开放性建设,方能走得更远. ...
- 消息队列Kafka「检索组件」重磅上线!
简介:本文对消息队列 Kafka「检索组件」进行详细介绍,首先通过对消息队列使用过程中的痛点问题进行介绍,然后针对痛点问题提出相应的解决办法,并对关键技术技术进行解读,旨在帮助大家对消息队列 Kaf ...
- 每次都需要解释大量指令?使用 PolarDB-X 向量化引擎
简介: 向量化引擎为PolarDB-X的表达式计算带来了显著的性能提升. 介绍 PolarDB-X是阿里巴巴自研的云原生分布式数据库,采用了计算-存储分离的架构,其中计算节点承担着大量的表达式计算任务 ...
- 小白也能懂的 Nacos 服务模型介绍
简介: 理解了 Nacos 的服务模型,也有利于我们了解 Nacos 背后的工作原理,从而确保我们正确地使用 Nacos. 作者:岛风 前言 按照目前市场上的主流使用场景,Nacos 被分成了两块功能 ...
- [GPT] 序列模型分类及其模型方案选择
序列模型可以分为两大类:线性序列模型和非线性序列模型. 线性序列模型:这类模型基于线性关系对时间序列进行建模和预测.常见的线性序列模型包括自回归模型(AR).移动平均模型(MA)和自回归移动平均模 ...
- dotnet 使用增量源代码生成技术的 Telescope 库导出程序集类型
本文将告诉大家在 dotnet 里面使用免费完全开源的基于增量源代码生成技术的 Telescope 库,进行收集导出项目程序集里面指定类型.可以实现性能极高的指定类型收集,方便多模块对接入自己的业务框 ...
- MySQL—MySQL的存储引擎之InnoDB
MySQL-MySQL的存储引擎之InnoDB 存储引擎及种类 存储引擎 说明 MyISAM 高速引擎,拥有较高的插入,查询速度,但不支持事务 InnoDB 5.5版本后MySQL的默认数据库存储引擎 ...
- vue监听watch
export default { watch:{ showArea(val,_val){ console.log('showAre ...