C# widget
Invoke(Delegate)的用法:
- //例如,要实时update窗体。如果在另一个线程中update,那么可以直接update(可以不在新线程中);也可以在Delegate中给出upate,然后invoke调用(但是invoke必须在另一线程中)
- //区别在于invoke是同步的(在此处,同步是啥意思)
- //参数Delegate拥有某个窗体句柄的控制权,即Delegate是在窗体类中定义的 —— 故update操作应在Delegate中
- //invoke应该在另一个线程中调用;返回值为Delegate的返回值
- class MyFormControl : Form
- {
- public delegate void AddListItem();
- public AddListItem myDelegate;
- private Thread myThread;
- public MyFormControl()
- {
- myDelegate = new AddListItem(AddListItemMethod);
- myThread = new Thread(new ThreadStart(ThreadFunction));
- myThread.Start();
- }
- public void AddListItemMethod()
- {
- //update
- }
- private void ThreadFunction()
- {
- MyThreadClass myThreadClassObject = new MyThreadClass(this);
- myThreadClassObject.Run();
- }
- }
- class MyThreadClass
- {
- MyFormControl myFormControl1;
- public MyThreadClass(MyFormControl myForm)
- {
- myFormControl1 = myForm;
- }
- public void Run()
- {
- myFormControl1.Invoke(myFormControl1.myDelegate);
- //myFormControl1.myDelegate();
- }
- }
主要采用纯手写代码,生成窗体界面的方式(偶尔也可能拖控件)。
空工程创建一个窗体(但是现在是先弹出控制台——想办法去掉):
- using System.Drawing;
- using System.Windows.Forms;
- namespace Project1
- {
- class MyFormControl : Form
- {
- public MyFormControl()
- {
- ClientSize = new Size(, );
- Text = "Custom Widget";
- }
- static void Main()
- {
- MyFormControl myForm = new MyFormControl();
- myForm.ShowDialog();
- }
- }
- }
Button的创建及响应事件(下面的就不AddRange了):
- //基于刚才的工程,在构造函数中新建一个button
- //Location、Size、TabIndex、Text、EventHandler
- myButton = new Button();
- myButton.Location = new Point(, );
- myButton.Size = new Size(, );
- myButton.TabIndex = ;
- myButton.Text = "Add items in list box";
- myButton.Click += new EventHandler(Button_Click);
- Controls.AddRange(new Control[] { myButton });
ListBox的创建及用法:
- myListBox = new ListBox();
- myListBox.Location = new Point(, );
- myListBox.Name = "myListBox";
- myListBox.Size = new Size(, );
- myListBox.TabIndex = ;
- //添加项
- string myItem = "";
- myListBox.Items.Add(myItem);
- myListBox.Update();
C# widget的更多相关文章
- StructureMap 代码分析之Widget 之Registry 分析 (1)
说句实话,本人基本上没用过Structuremap,但是这次居然开始看源码了,不得不为自己点个赞.Structuremap有很多的类,其中有一个叫做Widget的概念.那么什么是Widget呢?要明白 ...
- Sencha ExtJS 6 Widget Grid 入门
最近由于业务需要,研究了一下Sencha ExtJS 6 ,虽然UI和性能上据相关资料说都有提升,但是用起来确实不太顺手,而且用Sencha cmd工具进行测试和发布,很多内部细节都是隐藏的,出了问题 ...
- 使用 CoordinatorLayout 出错 inflating class android.support.design.widget.CoordinatorLayout
ava.lang.RuntimeException: Unable to start activity ComponentInfo{com.czr.ianpu/com.czr.ianpu.MainAc ...
- yii2——自定义widget
参考资料:http://www.bsourcecode.com/yiiframework2/how-to-create-custom-widget-in-yii2-0-framework/ 如何使 ...
- Yii2 时间控件之把layDate做成widget
实现效果如下 1.把layDate封装成Yii2的widget,存在 "\common\widgets"目录下,命名为DycLayDate,具体引用查看代码. 2.对应的model ...
- 解决Android中No resource found that matches android:TextAppearance.Material.Widget.Button.Inverse问题
解决Android中No resource found that matches android:TextAppearance.Material.Widget.Button.Inverse问题http ...
- Ext.js细节:在MVC中处理Widget Column,GetCmp和ComponentQuery, Id和ItemId
针对EXT.JS版本的演进,要不断的学习新的最佳实践方法. 比如,在定义组件时,尽管用itemid,而不是id. 在搜索组件时,尽量用ComponentQuery,而不是getCmp. 在MVC中处理 ...
- App Widget简单应用
首先后台进程创建一个PendingIntent对象,其中PendingIntent中包含一个真正的Intent,创建完成后将此PendingIntent对象交给桌面控件所在的进程,当用户点击桌面控件或 ...
- App Widget
AppWidgetProviderInfo对象: 为App Widget提供元数据(描述数据的数据,如XML.关系型数据的表结构),包括布 局,更新频率等数据.这个对象被定义在XML文件当中: App ...
- android应用开发(十):widget的使用
1.自定义widget必须继承AppWidgetProvider 源码:http://www.jinhusns.com/Products/Download/?type=xcj 2.AndroidMan ...
随机推荐
- CXF框架入门(重点)
l CXF是一个开源的webservice框架 l CXF支持的协议:SOAP.XML/HTTP等 l CXF可以很好的和spring集成 l CXF可以部署到tomcat.jboss.jetty等服 ...
- eclipse 依赖别的 工程 断点进不去
maven Debug 发现进不了断点. 点击右键-->Properties-->Java Compiler-->Classfile Generation, 勾选上Add line ...
- mysql-day06
##视图 - 什么是视图:在数据库中存在多种对象,表和视图都是数据库中的对象,创建视图时名称不能和表重名,视图实际上就代表一段sql查询语句,也可以理解成视图是一张虚拟的表,此虚拟表中的数据会随着原表 ...
- QMenu 设置菜单图标 & 生成菜单树
效果图 源码 .h 文件 protected slots: void onMenuTriggered(QAction*); .cpp 文件 // 菜单 QMenu *pMenu = new QMenu ...
- Shell生成数字序列
转自http://kodango.com/generate-number-sequence-in-shell Shell里怎么输出指定的数字序列: for i in {1..5}; do echo $ ...
- kivy 使用webview加载网页
from kivy.app import App from kivy.uix.widget import Widget from kivy.clock import Clock from jnius ...
- php 网站中文简体繁体转换类
php 网站中文简体繁体转换类 <?php /* * define zh convert functions * 2017-4-28 use str_replace for speed * zh ...
- Android之扫描文件或文件夹
我们或许经常会遇到这种情况,明明保存了图片,但是当你打开图片时,却没有找到这张图片,手机重启之后才能看到.这是因为SD卡并没有重新挂载,图库也无法把这张图片加载进去,解决这个问题非常简单,只需要我们重 ...
- kaggle竞赛_mnist_10%
主要是通过mnist了解kaggle的操作细节,最终这里的结果为: 引入必须的库¶ import pandas as pd import numpy as np import matplotlib ...
- 学习Struts2的个人疑惑及问题解决
刚开始学习SSH框架中Struts2时,个人疑惑以及一些问题总结一下. 1.package节点namespace属性值决定访问路径问题 namespace不写或写namespace=&qu ...