winform基础控件-例子学习

绛河 绛河     2022-09-17     687

关键词:

1、如图实现整数计算器

ComboBox控件:

Items属性:添加集合中的项。

this.comoper.Items.AddRange(new object[] {
            "+",
            "-",
            "x",
            "/"});

TextBox:

对TextBox的输入文本有限制:

1)只能输入数值型(整数和小数);

2)小数点不能开头,小数只能输入一位;

3)不满足要求的输入统一不接受。

实现方法

使用TextBox的KeyPress事件:在控件有焦点的情况下按下键时发生。

KeyChar属性获取或设置与按下的键对应的字符。

KeyPress 事件不能由非字符键引发;但是非字符键能够引发 KeyDownKeyUp 事件。

使用 KeyChar 属性采样运行时的键击,以及使用或修改常用键击的一个子集。

若要仅在窗体级别处理键盘事件而不允许其他控件接收键盘事件,请将窗体的 KeyPress 事件处理方法中的 KeyPressEventArgs. Handled 属性设置为true。

//处理键盘按键盘事件,当前时间焦点在TextBox控件级别
        private void textnum1_KeyPress(object sender, KeyPressEventArgs e)
        {
            //通过sender得到触发该事件的控件
            TextBox currtextbox = sender as TextBox;

            if (e.KeyChar<'0' || e.KeyChar>'9')
            {
               //用户输入的不是数字
                e.Handled = true;
            }
//用户是否输入了退格键
if (e.KeyChar==8) { e.Handled = false; } //让用户输入小数点,判断是不是小数点 if(e.KeyChar==46) { //只让用户输入一个小数点,检测当前文本框是否有小数点
//报告指定 Unicode 字符或字符串在此实例中的第一个匹配项的从零开始的索引。 如果未在此实例中找到该字符或字符串,则此方法返回 -1。
if (currtextbox.Text.IndexOf(".") == -1) {
  //小数点不能在第一位,注意字符是单个单个输入的
                    //SelectionStart获取或设置文本框中当前输入的文本起始点。
if(currtextbox.SelectionStart>0) { e.Handled = false; } } } }

using System;
using System.Windows.Forms;

public class Form1: Form
{
    public Form1()
    {
        // Create a TextBox control.
        TextBox tb = new TextBox();
        this.Controls.Add(tb);
        tb.KeyPress += new KeyPressEventHandler(keypressed);
    }

    private void keypressed(Object o, KeyPressEventArgs e)
    {
        // The keypressed method uses the KeyChar property to check 
        // whether the ENTER key is pressed. 

        // If the ENTER key is pressed, the Handled property is set to true, 
        // to indicate the event is handled.
        if (e.KeyChar == (char)Keys.Return)
        {
            e.Handled = true;
        }
    }

    public static void Main()
    {
        Application.Run(new Form1());
    }
}

2、图片查看器

身份证号码的校正:

      private bool CheckCardId(string id)
        {
            //校验位的权值或编码值
            int[] wQuan = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
            string checkWei = "10X98765432";
            string number17 = id.Substring(0, 17);
            string number18 = id.Substring(17);
            int sum=0;
            for(int i=0;i<17;i++)
            {
                sum+=Convert.ToInt32(number17[i].ToString())* wQuan[i];
                //char类型不能直接转换成整形(实际转换成对应的ascii),先tostring在转换

            }
            int mod = sum % 11;
            string result = checkWei[mod].ToString();
            if(number18.Equals(result,StringComparison.OrdinalIgnoreCase))
            {
                return false;
            }
            else
            {
                return true;
            }
        }

        private void btnView_Click(object sender, EventArgs e)
        {
            //身份证可能是15位或者18位
            //15位身份证组号:省(20)市(2)县(2)年(2)月(2)日(2)+3序列号(奇男偶女)
            //18位身份证:第一:出生年前加上19 第二点:第18位校验位,从前17位计算而来
            string id = pidid.Text;
            int age = 0;
            int year = 0;
            if (id.Length == 15)
            {
                year = Convert.ToInt32(id.Substring(6, 2)) + 1900;
            }
            else if (id.Length == 18)
            {
                if(!this.CheckCardId(id))
                {
                    MessageBox.Show("身份证输入有误,请检查");
                        return;
                }
                year = Convert.ToInt32(id.Substring(6, 4));
            }
            else
            {
                MessageBox.Show("身份证长度输入有误,请重新输入");
                return;
            }
            age = DateTime.Now.Year - year;
            if (age >= 18)
            {
                pic.Visible = true;
            }
            else
            {
                MessageBox.Show("你太小了,回家看动画片吧");
            }
        }

3、访问网址

WebBrowser类:使用户可以在窗体内导航网页。

private void button1_Click(object sender, EventArgs e)
        {
            webBrowser1.Navigate(button1.Text);
        }

4.树形控件增删该查

TreeView:

与上图对应的方法:

   private void button1_Click(object sender, EventArgs e)
        {
            treeView1.HideSelection = false;
            MessageBox.Show(treeView1.SelectedNode.Text);
            
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //MessageBox.Show("根节点节点的数量{0}", treeView1.Nodes.Count.ToString());
            //treeView1.Nodes.Add("add");根节点添加
            //treeView1.Nodes[0].Nodes[0].Nodes.Add("王晓东");//添加到一级节点下
            if(treeView1.SelectedNode!=null)
            {
                treeView1.SelectedNode.Nodes.Add(textBox1.Text);
            }
            if(treeView1.SelectedNode==null)
            {
                treeView1.Nodes.Add(textBox1.Text);
            }

        }

        private void TreeView_Load(object sender, EventArgs e)
        {
            treeView1.ExpandAll();//展开节点
            treeView1.Nodes[0].ImageIndex = 3;
        }

        private void button4_Click(object sender, EventArgs e)
        {
            if(treeView1.SelectedNode!=null)
            {
                //treeView1.SelectedNode.ExpandAll();//展开当前节点下的所有节点
                treeView1.SelectedNode.Expand();//展开当前节点下的所子节点
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (treeView1.SelectedNode != null)
            {
                treeView1.SelectedNode.Collapse();//关闭当前节点下的所有节点
            }
        }

        private void button5_Click(object sender, EventArgs e)
        {
            treeView1.SelectedNode.Remove();
        }

        private void button6_Click(object sender, EventArgs e)
        {
            string str="选中的语言";
            foreach(TreeNode tn in treeView1.Nodes[0].Nodes[0].Nodes)
            {
                if(tn.Checked==true)
                {
                    str = str + tn.Text;
                }
            }
            MessageBox.Show(str);
        }

        private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
        {
            foreach (TreeNode tn in e.Node.Nodes)
            {
                tn.Checked = e.Node.Checked;
            }
        }
View Code

 

winform自定义控件基础

1.设置图像和文字以抗锯齿的方式呈现1g.SmoothingMode=SmoothingMode.AntiAlias;2g.TextRenderingHint=TextRenderingHint.AntiAlias; 2.指定区域绘图(常见于OnPaint函数中:g.DrawImage(...))1//参数:2//image:3//要绘制的System.Drawing.Image。4// 查看详情

winform创建自定义控件

虽然VS为我们提供了很多控件可以使用,但有时候这些控件仍然不能满足我们的要求,比如我们要对部分控件进行一些个性化的定制,例如美化控件,这时候就需要自己绘制控件,或是在原有控件的基础上进行修改自定义控件分... 查看详情

2017-04-24winform基础登录窗口窗口属性

 一、winform基础 客户端应用程序:C/S客户端应用程序可以操作用户电脑中的文件,代码要在用户电脑上执行,吃用户电脑配置。 窗体是由控件和属性做出来的 控件:窗体里所放的东西。“视图”中的“工具箱”&n... 查看详情

winform框架中内容的学习(代码片段)

 一.Winform框架中的内容WinForm(一)WinForm入门与基本控件使用_阿阿阿安的博客-CSDN博客_winform winform控件及其各个属性_weixin_30907935的博客-CSDN博客【(1)WindowState属性:用来获取或设置窗体的窗口状态。取值有... 查看详情

winform控件大全,要详细的.

WinForm控件大全,要详细的.基础-常用控件C#WinForm开发系列-CheckBox/Button/Label/ProgressBarWinForm下CheckedListBox的数据绑定Winform下无闪烁走马灯效果实现c#,winform,progressbar+labe,联动显示进度C#WinForm开发系列–TextBox只能输入数字的TextBox---补... 查看详情

在运行时更改 winforms 控件

】在运行时更改winforms控件【英文标题】:Changewinformscontrolatruntime【发布时间】:2018-10-1812:01:20【问题描述】:我通过以下方式继承了用户控件:控制基础|__ControlInherited1|__ControlInherited2ControlBase包含在每个继承的控件中被覆盖的... 查看详情

开源winform控件库:花木兰控件库(代码片段)

...S2019 、NetFramework4.0(不包括NetFramework4.0ClientProfile) 开发的Winform控件库。为了兼容性采用了C#(语言)4.0版本,低版本VS也可以编译该项目。整个控件控除了动画函数由Silverlight提取出来和ColorEditorExt.cs颜色面板视图设计... 查看详情

c#-winform-打印控件

打印控件绘制如下窗体一、PrintDocument-打印的基础 首先放置PrintDocument控件,双击事件PrintPage设置要打印的样式(李献策lxc)  //第一步设置打印属性privatevoidprintDocument1_PrintPage(objectsender,System.Drawing.Printing.PrintPageEventArgse){//... 查看详情

学习winform的控件datagridview的一般使用(代码片段)

先上学习测试的一些截图1:获取多个控件上面的值(checkbox,combobox,textbox,radiobutton)2:获取到选择行的主键ID的value,方便我们进一步CURD3:获取选择一行的数据以及一行是多少列4:绑定显示自定义的列头名称5:选中一行的属性设置操... 查看详情

c#winform开发(代码片段)

文章目录C#WinForm开发1.创建C#WinForm项目a.进入项目界面b.项目结构c.自定义一个Form2.给控件添加事件3.显示时间小项目4.控件5.几种布局a.FlowLayoutPanel流式布局b.TableLayoutPanel表格布局c.可以自定义控件6.文本框7.CheckBox复选框8.其他的一... 查看详情

wpf-mvvm学习心德(winform转wpf心德)

...触MVVM接近一段时间了,有一点理解,写下来。之前是做winform的,工作需要,学习wpf。优缺点就不用说类,网上一大堆。我自己理解的话,有下面几点:1、首先是界面的xmal和界面分离:wpf也同样支持拖拉控件,但是使用wpf的人... 查看详情

wpf学习之路……

Wpf学习之路……Wpf是.net中一门做winform的技术,和传统的winform的区别在于:1、        原来的winform就是拖控件,而wpf的控件都死自己拿标记语言(xaml)来写,类似于web中的html.2、    &nb... 查看详情

winform基础

listview:1、修改视图2、设置列头3、编写行数据记住的属性:行为:Items-listview中的项HideSelection-失去焦点,依然保证选中状态HoverSelection-当控件没有焦点时,移除选定项的突出显示。MultiSelect-允许选中多项外观:CheckBoxes-多选FullRo... 查看详情

winform控件之datagridview数据控件显示问题

    最近在做同类的信息记录管理系统时遇到了DataGridView数据控件的显示问题,可能是2015年的上半年没有深入学习C#开发的原因,这几天重新搬出来开发,首先遇到的问题就是动态绑定数据显示的问题,琢磨了很久... 查看详情

winform之bindingsource基础操作实例教程

通常我们在进行数据绑定的时候,常用的数据源有DataSet、DataTable、BindingList<T>、还有强类型数据源。今天我们来通过实例了解一下BindingSource组建,分享给大家供大家参考借鉴之用。BindingSource的两个用途:(1)首先,它提供... 查看详情

winform开发模式&&公共控件

WinForm开发模式  把之前的控制台程序加了一个界面  在一个窗体内,通过触发事件来执行一些代码  执行的这些代码里有的数据是来自于界面的控件上  还有一部分数据来自于数据库最终目的是经过C#处理是否展示在界... 查看详情

winform界面开发-html内容编辑控件

参照及推荐博客:伍华聪http://www.cnblogs.com/wuhuacong/archive/2009/07/07/1518346.htmlhttp://www.cnblogs.com/wuhuacong/p/3560685.html这篇文章介绍了作者软件的开发及成长历程,作者在十几年的开发历程中注重思考、总结、归纳和整理,形成了自己的... 查看详情

c#,winform程序中datagridview控件使用多层表头,由于表头项太多,拖动滚动条的时候一直闪,请教高手

我加了一个滚动条事件,然后让表头重绘,可是闪的厉害,如果不加滚动条事件表头老是重叠,请高手赐教哇这种有合并的,尽量使用第三方控件做,VS自带的DataGridView控件,属于轻量级的基础控件,我一般使用c1FlexGrid for&nb... 查看详情