VS常用快捷键:

https://www.cnblogs.com/happyzwt/p/7769129.html



  • C# 类(Class) | 菜鸟教程

  • C# Socket简单例子(服务器与客户端通信) - lhg0302 - 博客园

  • C# 方法的回调(上) - 阿磊ing - 博客园

  • visual studio中,将光标移动到上一次编辑的位置快捷键是什么_百度知道

  • c#中如何给Label动态赋值?_百度知道

  • C#中,WinForm程序如何捕获当前Form窗体的对象名?_百度知道

  • C#在类中用调用Form的方法 - hikarusun - 博客园

  • C#常用快捷键 - 心含林夕 - 博客园

  • Visual Studio C#常用快捷键(必看) - IT的鱼 - CSDN博客

  • Visual studio之C# 新建线程与定时器的使用 - Ch_Y_Q - 博客园

  • C# 子线程获取Ui线程的控件属性问题_百度知道

  • C#开发的圆圈形进度条控件 - C# - 大富翁Delphi开发技术网站

  • 在C#中如何让运行后的窗口显示在桌面中间_百度知道

  • Visual Studio生成get、set的快捷键 - 梨落满秋的博客 - CSDN博客

  • C#版 Socket编程(最简单的Socket通信功能) - linybo的专栏 - CSDN博客

  • C# Socket服务端和客户端互相send和receive - 简书

  • Form.OnClosed(EventArgs) Method (System.Windows.Forms) | Microsoft Docs

  • 怎样在vs2010中添加图片资源呢? - 衣舞晨风 - CSDN博客

  • C# 如何引用外部(未嵌入到项目project)的图片或资源 - 郎涯工作室 - CSDN博客



#########################################c#开发########################################################################

最近遇到一个需求:在PC端连接设备wifi热点之后,与设备建立socket连接,对设备进行参数设置和获取。

经过一番研究,决定用C#来实现。


一.开发环境配置

      1)下载并安装Microsoft Visual Studio

      2)创建c#工程

            

二.C#工程介绍

      1)工程结构

           C#开发_第1张图片

        

二.UI创建            

        1. Form创建成功后,从工具箱(工具栏视图可打开)拖拽控件到Form上即可。

                    C#开发_第2张图片


                    在“xx.Designer.cs"这个文件里,可以通过代码对UI进行精确编辑。

        

        2.双击窗体或者控件,就能通过代码编辑控件事件。

            1)其实form类似android里的Activity类,在form里引用控件不需要findViewById,直接使用控件name属性就能得到控件。

           因为InitializeComponent这个过程,编辑器已经自动完成了findViewById的过程

            2)如果在非form类里引用控件,需要将控件传递到目标类中。通常在form里定义内部类,然后创建对象,再把控件封装进去。

       /*
         * Form的view的封装
         */
        public class ViewHolder
        {
            private Form mainForm;

            public Form MainForm
            {
                get { return mainForm; }
                set { mainForm = value; }
            }
            ...
         }

              将viewHolder传入给view,然后调用。

          private void connectServer()    
          {
                mainSocket.connectServer(new ConnectResultCallBackClass(this, viewHolder));
          }

        3. 在UI线程里刷新UI

            和android里一样,不能直接在子线程里刷新UI。

      //要在主线程里运行
               _viewHolder.MainForm.Invoke((EventHandler)(delegate
               {
                   // 这里写你的控件代码,比如
                   _viewHolder.Tb_ble_name.Text = bleParams[0];
                   _viewHolder.Tb_ble_face_num.Text = bleParams[1];
                   _viewHolder.Tb_hetong_num.Text = bleParams[2];
                   _viewHolder.Tb_ble_mac.Text = bleParams[3];
               }
               ));

               

  

三.创建线程            

        1.创建并启动线程

  private void connectDeviceInThread(){
            viewHolder.Lb_connect_state.ForeColor = Color.Black;
            this.lb_connect_state.Text = "正在连接设备...";
            LogUtil.printf("正在连接设备...");
            Thread shutdownlazer_thread = new Thread(connectServer);
            shutdownlazer_thread.Start();
        }

         线程注意最后要销毁

 

四.定义回调            

        1.创建接口

        2.创建接口的实现类(注意c#不像java有匿名内部类)

           这样会造成类的爆炸式增长,所以需要运用c#的委托机制进行回调。https://www.cnblogs.com/z888/p/5798871.html



五.生成DLL文件

  https://jingyan.baidu.com/article/d7130635d5b15113fdf47529.html