winform3

OpenFileDialog 

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
                //定义一个文件打开控件
                OpenFileDialog ofd = new OpenFileDialog();
                //设置打开对话框的初始目录,默认目录为exe运行文件所在的路径
                ofd.InitialDirectory = Application.StartupPath;
                //设置打开对话框的标题
                ofd.Title = "请选择要打开的文件";
                //设置打开对话框可以多选
                ofd.Multiselect = false;
                //设置对话框打开的文件类型
                ofd.Filter = "文本文件|*.txt|音频文件|*.wav|图片文件|*.jpg|所有文件|*.*";
                //设置对话框是否记忆之前打开的目录
                ofd.RestoreDirectory = false;

                if (ofd.ShowDialog() == DialogResult.OK)
                {

                    string reg1 = @"jpg$|png$";
                    string reg2 = @"txt$";
                  //获取用户选择的文件完整路径
                   string filePath = ofd.FileName;

                    Console.WriteLine(filePath);
                if (Regex.IsMatch(filePath, reg1))
                {

                    //图片显示
                    pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;  //使图像拉伸或收缩,以适合PictureBox
                    this.pictureBox1.ImageLocation = filePath;
                }
                else if (Regex.IsMatch(filePath, reg2))
                {

                    Console.WriteLine(File.ReadAllText(filePath));
                
                }
         
               }
        }

 正则表达式

 //什么是正则表达式?
    //1.正则表达式(Regular Expression)是一种文本模式,
    //包括普通字符(如,a - z,A - Z,0 - 9等)和特殊字符(如:+,?,*等)。
    //2.正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
    //3.正则表达式使用场景: 比如 登录 注册 验证邮箱  验证电话 验证密码等
            // 2.正则表达式基本使用
            // (1) ^和$边界符    ^匹配开头  $匹配结尾
            string reg2 = @"^abc"; //匹配字符串是不是以abc开头


            string reg3 = @"abc$"; //匹配字符串是不是以abc结尾
      // (2)[]字符集  [] 表示一系列的字符可被匹配,只要匹配其中一个就可以
            var reg4 = @"^[0-9]";  //匹配开头为数字的字符串
            var reg5 = @"^[a-z]";  //匹配开头为小写字母的字符串
            var reg6 = @"^[A-Z]";  //匹配开头为大写字母的字符串
            var reg7 = @"^[A-Za-z0-9] ";  //匹配开头为字母或者是数字的字符串
             //(3)^出现在[]内部 代表取反的意思
            var reg8 = @"^[^0-9]";   //匹配开头不为数字的字符串
              // (4) + 匹配前面的子表达式一次或多次。
            // 例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}
            var reg9 = @"zo+";
            // 6.* 匹配前面的子表达式0次或者多次
            // 例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
            var reg10 = @"zo*";
            // 7. ?匹配前面的子表达式0次或者一次
            // 例如,"do(es)?" 可以匹配 "do" 或 "does" 。? 等价于 {0,1}。
            var reg11 = @"do(es)?";
            //8. | 表示或 匹配其中的一个或多个
           
            var reg12 = @"你好|他好|她好";
            //9.{}  限定{}前面字符出现的次数
            // {6}   6次
            // {6,8} 6-8次
            // {6,} 至少6次
            // \d 代表数字  类似 [0-9]
            var reg13 = @"^\d{6}";  //匹配开头6位都为数字的字符串
            string input = "cdabcdefghijkabc";
            string pattern = "bci";
            string replacement = "PP";
            var reg222 = @"^abc";
           
            
           
            // 检查是否匹配
            bool isMatch = Regex.IsMatch(input, reg4);
            Console.WriteLine("是否存在" + isMatch);

            替换字符串中的匹配部分
            //string result = Regex.Replace(input, pattern, replacement);
            //Console.WriteLine("替换结果 " + result);


            获取所有匹配
            //MatchCollection matches = Regex.Matches(input, pattern);
            //foreach (Match match in matches)
            //{
            //    Console.WriteLine("Found 'ai' at position " + match.Index);
            //}

            使用模式分割字符串
            //string[] parts = Regex.Split(input, pattern);
            //foreach (string part in parts)
            //{
            //    Console.WriteLine(part);
            //}

 Invoke

  public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

        }
        //任务繁重考虑使用多线程编程
        //(再短时间内无法正常执行完的逻辑 --for  --网络延迟)
        //再使用多线程编程后,因为所有UI渲染过程都在主线成完成
        //但是事件响应函数时,不一定在主线程,
        //所以你在不确定的线程中修改 UI 可能会引起错误

        private void button1_Click(object sender, EventArgs e)
        {
            Button button = (Button)sender;
            Thread.Sleep(1000);
            Console.WriteLine("下载10%");
            Thread.Sleep(1000);
            Console.WriteLine("下载30%");
            Thread.Sleep(1000);
            Console.WriteLine("下载40%");
            Thread.Sleep(1000);
            Console.WriteLine("下载60%");
            Thread.Sleep(1000);
            Console.WriteLine("下载80%");
            Thread.Sleep(1000);
            Console.WriteLine("下载100%");

            button.Text = "下载完毕";
        }


        //Invoke方法的作用 在委托事件中 调用刷新UI操作时
        //去寻找主线程 刷新UI 保证UI刷新在主线程中完成
       //Invoke方法需要创建一个委托。可以事先写好函数和与之对应的委托
    
        private void button2_Click(object sender, EventArgs e)
        {
            Task.Run(() =>
            {    //繁重的任务
                Thread.Sleep(1000);
                Console.WriteLine("下载10%");
                Thread.Sleep(1000);
                Console.WriteLine("下载30%");
                Thread.Sleep(1000);
                Console.WriteLine("下载40%");
                Thread.Sleep(1000);
                Console.WriteLine("下载60%");
                Thread.Sleep(1000);
                Console.WriteLine("下载80%");
                Thread.Sleep(1000);
                Console.WriteLine("下载100%");

                //开启分线程执行繁重任务
                string str = "下载完毕";
                //使用Invoke 回到主线程 刷新UI
                this.Invoke(new Action(delegate ()
                {  
                    //UI刷新内容
                    this.button2.Text = str;
                }));
            });
        }
       

    
    }

await

      //同步
        private void button2_Click(object sender, EventArgs e)
        {
            var tempTask = Task.Run(() =>
            {
                Thread.Sleep(1000);
                Console.WriteLine("下载10%");
                Thread.Sleep(1000);
                Console.WriteLine("下载30%");
                Thread.Sleep(1000);
                Console.WriteLine("下载40%");
                Thread.Sleep(1000);
                Console.WriteLine("下载60%");
                Thread.Sleep(1000);
                Console.WriteLine("下载80%");
                Thread.Sleep(1000);
                Console.WriteLine("下载100%");

                return "下载完成111";

            });
            richTextBox1.Text = tempTask.Result;
        }

        //异步
        private async void button1_Click(object sender, EventArgs e)
        {
            var tempTask = Task.Run(() =>
            {

                Thread.Sleep(1000);
                Console.WriteLine("下载10%");
                Thread.Sleep(1000);
                Console.WriteLine("下载30%");
                Thread.Sleep(1000);
                Console.WriteLine("下载40%");
                Thread.Sleep(1000);
                Console.WriteLine("下载60%");
                Thread.Sleep(1000);
                Console.WriteLine("下载80%");
                Thread.Sleep(1000);
                Console.WriteLine("下载100%");

                return "下载完成";

            });
            string a = await tempTask;
            richTextBox1.Text = a;

        }
    }

  • 14
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要下载WinForm 3D Chart,您可以按照以下步骤进行操作: 1. 在您的Web浏览器中打开搜索引擎(如Google)并搜索“WinForm 3D Chart下载”。 2. 在搜索结果中查找可靠的网站或供应商,以便从他们那里下载WinForm 3D Chart。请确保您选择的网站是安全可信的。 3. 点击下载链接,您可能需要提供一些信息(如您的电子邮件地址)以便获得下载链接或许可证密钥。 4. 确认下载的文件是与您的操作系统兼容的,例如Windows操作系统。 5. 选择一个下载位置,并开始下载WinForm 3D Chart的安装文件。这可能需要一些时间,具体取决于您的网络连接速度。 6. 下载完成后,双击安装文件,按照屏幕上的指示完成安装过程。 7. 运行安装程序后,您可以在您的WinForm应用程序中使用3D Chart控件。根据您的需求,您可能需要在应用程序代码中进行进一步的设置和配置。 请记住,在下载任何软件之前,始终要确保您从安全可信的来源进行下载,以避免潜在的安全威胁。 ### 回答2: 要下载 WinForm 3D Chart ,您可以按照以下步骤进行操作: 1. 首先,打开您的网络浏览器,并在搜索引擎中输入关键词“WinForm 3D Chart 下载”。 2. 在搜索结果中,找到可靠的来源或供应商,例如官方网站或知名的软件分享网站。 3. 点击所选来源的链接,进入该网站。 4. 在该页面上,您可能需要登录或注册以获得下载权限,根据网站的要求进行操作。 5. 浏览网站,通过搜索或导航找到与 WinForm 3D Chart 相关的页面或下载链接。 6. 点击下载链接,开始下载该软件。根据网速和文件大小的不同,下载时间会有所不同。 7. 下载完成后,找到下载文件并解压缩(如果需要)。 8. 打开解压后的文件夹,并查看其中的安装说明或文档。阅读或按照说明进行后续操作。 9. 根据安装说明,运行安装程序,并按照提示进行安装。 10. 安装完成后,您可以在适当的位置找到 WinForm 3D Chart 并开始使用。 ### 回答3: 对于WinForm 3D图表的下载,有几个常见的途径可供选择。 首先,您可以通过访问微软的官方网站,搜索WinForm 3D图表插件的下载页面。在该页面上,您可以选择适用于WinForm项目的3D图表插件,并进行下载。在下载完成后,您可以按照提供的安装指南将插件集成到您的WinForm项目中。 其次,您还可以在一些第三方开发者社区或软件下载网站中搜索WinForm 3D图表插件。这些社区或网站通常提供各种各样的插件和组件供开发者使用,其中也包括3D图表插件。您可以在这些网站中搜索并下载适用于WinForm项目的 3D图表插件。 最后,另一个选择是通过使用包管理器工具(如NuGet)来下载WinForm 3D图表插件。NuGet是一个用于管理.NET开发项目的包管理器,可以方便地搜索和安装各种各样的插件和组件。您可以在NuGet的官方网站上搜索WinForm 3D图表插件,并按照提供的指南在您的项目中安装和使用插件。 综上所述,您可以通过访问微软的官方网站、第三方开发者社区或软件下载网站,以及使用包管理器工具来下载WinForm 3D图表插件。这些方法都可以帮助您获取所需的插件,以便在您的WinForm项目中使用3D图表功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值