×

控件开发

控件开发(控件开发工具在哪)

admin admin 发表于2023-04-08 15:10:07 浏览70 评论0

抢沙发发表评论

本文目录一览:

开发Eclipse下的自定义控件[3]

addMouseListener(new MouseListener() {public void mouseDoubleClick(MouseEvent e) {}public void mouseDown(MouseEvent e) {int row = (e y cy) / lineHeight; //计算选中的行if (row = ) {oldRowSel = rowSel;rowSel = row;}if (oldRowSel != rowSel) { // 重画旧的和新的选择项((Canvas) e getSource()) redraw(cx (e y / lineHeight)* lineHeight maxX lineHeight false);((Canvas) e getSource()) redraw(cx (oldRowSel + cy/ lineHeight)* lineHeight maxX lineHeight false);}selectionChanged();}public void mouseUp(MouseEvent e) {}});

当我们的控件获得焦点时 选中的列表项需要有虚框表示控件得到焦点 当获得或失去焦点是 我们这里只需要简单的通知选中的项重画

addFocusListener(new FocusListener() {public void focusGained(FocusEvent e) {((Canvas) e getSource()) redraw(cx rowSel * lineHeight maxX lineHeight true);}public void focusLost(FocusEvent e) {((Canvas) e getSource()) redraw(cx rowSel * lineHeight maxX lineHeight true);}}); -控件开发

我们在绘制每一个列表项时可以加入判断当前控件是否得到焦点 如果控件得到了焦点 我们就在选中的项目上画一个虚框 下面是我们绘制一个列表项的代码 注意在代码的最后绘制焦点的虚框

void onPaint(GC gc int row int beginx int beginy boolean isSelected) {Color initColor = gc getBackground();Color initForeColor = gc getForeground();if (isSelected) {gc setBackground(Display getCurrent() getSystemColor(SWT COLOR_LIST_SELECTION));gc fillRectangle(beginx beginy maxX lineHeight);gc setForeground(Display getCurrent() getSystemColor(SWT COLOR_LIST_SELECTION_TEXT));} else {gc setBackground(initColor);}gc drawString((String) colorNames get(row) beginx + beginy);Color color = Display getCurrent() getSystemColor(((Integer) colors get(row)) intValue());gc setBackground(color);gc fillRectangle(beginx + beginy + lineHeight );gc setBackground(initColor);gc setForeground(initForeColor);if (isFocusControl() isSelected)gc drawFocus(cx beginy maxX lineHeight);} -控件开发

lishixinzhi/Article/program/Java/ky/201311/28984

Asp.net控件开发----控件开发基础

服务器控件开发基础

当开发一个服务器控件时 首先要明白其内部的工作机理 其实在页面内部每一点由返回的HTML代码无论是简单的span标签 或者是button按钮 或者是复杂的gridview控件 都是由继承自System Web UI Control的对象生成的 -控件开发

控件的属性

控制控件的方法大多是通过控件的属性来操作的 通过控制服务器控件的属性 就可以相应的改变服务器生成的

下面是一个服务器控件的属性:   

   在Visual Studio里 当通过属性窗口来改变控件的属性时 VS会自动将属性添加到对应的aspx的HTML里 而在内添加属性时 在属性窗口里也会对应显示更改过的属性视图比如

asp:Button ID= Button runat= server Text= Button CommandName= cName /

在属性窗口里会对应显示 如下图

   当然某些控件的属性会略有不同 比如常用的Label控件

asp:Label ID= Label runat= server 这里是Text属性/asp:Label

在开始符号和结束符号之间的内容会被设置成Text属性

当然 最实用也是我们最常用的是通过C#以编程的方式动态的修改控件的属性 这就不说了

控件的方法

控件通过方法来操作更加复杂的控件操作 通常在控件的方法内部会有很复杂的过程 一般包括几个内部函数和属性的组合 比如

private void LoadDropDownList()

{

ArrayList list = new ArrayList();

list Add( Hello );

list Add( Goodbye );

GridView DataSource = list;

GridView Databind();

}

这样 通过调用Databind()方法 就可以讲gridview和数据源进行绑定

控件的事件

控件通过事件来通知其它类或者客户端其内部的某个状态被改变 事件是一种灵活的机制 当控件与客户端进行交互的时候 事件会通过Http Post方法和服务器进行交互 通过自动回传机制 WEB开发中的事件表现起来就会像开发Windows FORM程序一样(当然 速度是无法和Form相比的)-控件开发

在Visual Studio中 可以在属性窗口中通过黄色的闪电图标来显示和控制控件的事件 如下

当双击相应的事件后 会在后台产生默认的处理方法 命名规则为 控件名_事件名

        WEB Page 本质是一个控件树

在aspx页面的头部将Trace= true 设置到Page后 页面会显示相应的追踪信息 在Control Tree那一节 你会发现整个页面其实就是一个控件树 如图:

根控件?

OK 既然页面的本质是一个控件树 按照C#是完全面向对象的语言惯例(所有的一切都是继承于System Object) 那么所有控件共同的父类是什么?

在中 所有的控件被分布在 个主要命名空间中 分别为

System Web UI

System Web UI WebControls

System Web UI HtmlControls

它们之间的关系如下图所示

System Web UI 命名空间

lishixinzhi/Article/program/net/201311/12910

.net WinForm用户控件开发:用户控件弹出式属性设置

这一节给大家演示下怎样使属性值以弹出式对话框的形式显示出来 先来看下效果图

这里我们定义一个用户控件 并为用户控件设置一个属性 使用弹出式对话框为属性设置值

定义属性ShowPropery

代码如下

public partial class UCLab : UserControl { public UCLab() { InitializeComponent(); } private string showpropery; [Description( 弹出属性 )] [Editor(typeof(ShowTypeDialogEditor) typeof(UITypeEditor))] public string ShowPropery { get { return showpropery; } set { showpropery = value; } } -控件开发

}

然后我们为属性设置弹出式属性编辑器 需要继承UITypeEditor类 代码如下

/// summary /// 弹出式编辑器 /// /summary public class ShowTypeDialogEditor : UITypeEditor { public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) { if (context!=nullcontext Instance!=null) { return UITypeEditorEditStyle Modal;//显示一个省略号 } return base GetEditStyle(context); } public override object EditValue(ITypeDescriptorContext context IServiceProvider provider object value) { System Windows Forms Design IWindowsFormsEditorService editorService = null; if (context!=nullcontext Instance!=nullprovider!=null) { editorService =(System Windows Forms Design IWindowsFormsEditorService)provider GetService(typeof(System Windows Forms Design IWindowsFormsEditorService)); if (editorService!=null) { UCLab uclab =(UCLab)context Instance; ShowForm sf = new ShowForm(uclab ShowPropery); if (sf ShowDialog()==DialogResult OK) { value = sf Result; return value; } } } //return base EditValue(context provider value); return value; } }-控件开发

这样我们把用户控件拖到界面上 就可以设置属性了

lishixinzhi/Article/program/ASP/201311/21730