winform基礎控制項-例子學習

来源:http://www.cnblogs.com/janghe/archive/2017/08/31/7460751.html
-Advertisement-
Play Games

1、如圖實現整數計算器 ComboBox控制項: Items屬性:添加集合中的項。 TextBox: 對TextBox的輸入文本有限制: 1)只能輸入數值型(整數和小數); 2)小數點不能開頭,小數只能輸入一位; 3)不滿足要求的輸入統一不接受。 實現方法 使用TextBox的KeyPress事件:在 ...


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

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • https://stackoverflow.com/questions/14796162/how-to-install-a-windows-font-using-c-sharp ...
  • 微信小程式給我們提供了一個很好的開發平臺,可以用於展現各種數據和實現豐富的功能,本篇隨筆介紹微信小程式結合後臺數據管理實現商品數據的動態展示、維護,介紹如何實現商品數據在後臺管理系統中的維護管理,並通過小程式的請求Web API 平臺獲取JSON數據在小程式界面上進行動態展示。 ...
  • <Style x:Key="RoundCornerTextStyle" TargetType="{x:Type TextBox}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Te ...
  • 在準備工作中,我們已經完成準備工作,接下來就是進行開發啦,應該怎麼來開發呢??容我想想。。。我覺得我們可以直接讓用戶的消息發送到微信的消息,轉到我們自己的伺服器上面!!感覺好厲害的樣子1.首先寫 驗證程式啦,這第一步的工作呢,就是驗證數據是不是來源於微信端的,如果不是來自微信伺服器端的,那就安逸了。 ...
  • TemplateBinding。 ControlTemplate最終會被用到一個控制項上,我們稱這個控制項為模板目標控制項或者模板化控制項,ControlTemplate裡面的控制項可以使用TemplateBinding將自己的某個屬性值關聯到模板控制項的某個屬性值上,必要的時候還可以添加Converter。例 ...
  • 文章內容描述: 本文檔使用C#語言開發,MVC框架調用百度第三方登錄OAuth2.0介面。 詳細步驟: http://developer.baidu.com/ 個人百度賬號,登錄百度開發平臺http://developer.baidu.com/ 。 如果沒有註冊: https://passport. ...
  • ASP.NET Core Tag Helpers系列目錄,這是第五篇,共五篇: "ASP.NET Core MVC – Tag Helpers 介紹" "ASP.NET Core MVC – Caching Tag Helpers" "ASP.NET Core MVC – Form Tag Help ...
  • 相關博文: "Ubuntu 簡單安裝和配置 GitLab" "Ubuntu 簡單安裝 Docker" "Ubuntu Docker 簡單安裝 GitLab" "Ubuntu Docker 安裝和配置 GitLab CI 持續集成" 伺服器版本 Ubuntu 16.04 LTS。 經過上面四篇博文中的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...