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的更多相关文章

  1. StructureMap 代码分析之Widget 之Registry 分析 (1)

    说句实话,本人基本上没用过Structuremap,但是这次居然开始看源码了,不得不为自己点个赞.Structuremap有很多的类,其中有一个叫做Widget的概念.那么什么是Widget呢?要明白 ...

  2. Sencha ExtJS 6 Widget Grid 入门

    最近由于业务需要,研究了一下Sencha ExtJS 6 ,虽然UI和性能上据相关资料说都有提升,但是用起来确实不太顺手,而且用Sencha cmd工具进行测试和发布,很多内部细节都是隐藏的,出了问题 ...

  3. 使用 CoordinatorLayout 出错 inflating class android.support.design.widget.CoordinatorLayout

    ava.lang.RuntimeException: Unable to start activity ComponentInfo{com.czr.ianpu/com.czr.ianpu.MainAc ...

  4. yii2——自定义widget

    参考资料:http://www.bsourcecode.com/yiiframework2/how-to-create-custom-widget-in-yii2-0-framework/   如何使 ...

  5. Yii2 时间控件之把layDate做成widget

    实现效果如下 1.把layDate封装成Yii2的widget,存在 "\common\widgets"目录下,命名为DycLayDate,具体引用查看代码. 2.对应的model ...

  6. 解决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 ...

  7. Ext.js细节:在MVC中处理Widget Column,GetCmp和ComponentQuery, Id和ItemId

    针对EXT.JS版本的演进,要不断的学习新的最佳实践方法. 比如,在定义组件时,尽管用itemid,而不是id. 在搜索组件时,尽量用ComponentQuery,而不是getCmp. 在MVC中处理 ...

  8. App Widget简单应用

    首先后台进程创建一个PendingIntent对象,其中PendingIntent中包含一个真正的Intent,创建完成后将此PendingIntent对象交给桌面控件所在的进程,当用户点击桌面控件或 ...

  9. App Widget

    AppWidgetProviderInfo对象: 为App Widget提供元数据(描述数据的数据,如XML.关系型数据的表结构),包括布 局,更新频率等数据.这个对象被定义在XML文件当中: App ...

  10. android应用开发(十):widget的使用

    1.自定义widget必须继承AppWidgetProvider 源码:http://www.jinhusns.com/Products/Download/?type=xcj 2.AndroidMan ...

随机推荐

  1. SpringMVC七种参数绑定简单介绍

    a. 默认支持的类型:        httpServletRequest, httpservletresponse, httpsession, model        看自己需要, 如果需要用就加 ...

  2. vue各种实例集合

    注意:以下所有示例基于vue 2.x.Vuex 2.x. vm.$mount()-挂载: <body> <div id="a"> </div> ...

  3. vue中组件通信之父子通信:props(组件传参)

    实例一: <div id="app"> <alert msg="hhhhhhh"></alert> </div> ...

  4. 苹果手机显示分享链接的方法html页面

    function onBridgeReady(){ WeixinJSBridge.call('showOptionMenu'); } if (typeof WeixinJSBridge == &quo ...

  5. 从源码层面聊聊面试问烂了的 Spring AOP与SpringMVC

    Spring AOP ,SpringMVC ,这两个应该是国内面试必问题,网上有很多答案,其实背背就可以.但今天笔者带大家一起深入浅出源码,看看他的原理.以期让印象更加深刻,面试的时候游刃有余. Sp ...

  6. @RefreshScope 的作用

    让在application.properties里自定义的变量也能通过@Value 注解正常注入

  7. 状态管理之cookie使用及其限制、session会话

    # 1.什么是状态管理? 将浏览器与web服务器之间多次交互当作一个整体来处理,并且将多次交互所涉及的数据(即状态)保存下来.(cookie浏览器所涉及到的访问数据保存下来)# 2.如何进行状态管理? ...

  8. AngularJS的简单入门

    AngularJS诞生于2009年,由Misko Hevery等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多款产品当中.AngularJS有着诸多特性,最为核心 ...

  9. oracle parallel_index hint在非分区表的生效

    之前没特别注意,在有些场景下希望使用并行索引扫描的时候,发现parallel_index hint并没有生效,于是抽空看了下文档:The PARALLEL_INDEX hint instructs t ...

  10. 【题解】Luogu P3217 [HNOI2011]数矩形

    原题链接:P3217 [HNOI2011]数矩形 什么??!怎么又是计算几何,您钛毒瘤了-- 这道题真的是毒瘤 凸包?旋转卡壳? 看一下数据,N<=1500? 暴力 没错,就是暴力,N^2没毛病 ...