導航:首頁 > 知識科普 > 自定義控制項通常要重寫哪些方法

自定義控制項通常要重寫哪些方法

發布時間:2022-08-04 21:13:22

Ⅰ asp.net自定義控制項,

看看自定義控制項的部署一章
方式一:共享位置
方式二:嵌入程序集,估計你是採用這種方式

如何使用方式二:
1. 需要源文件屬性為嵌入資源
2.添加屬性在AssemblyInfo.cs中
[assembly:WebResource("資源名稱","MIME類型")]
3.重寫OnPreRender,注冊資源(就是生成頁面中對資源引用,估計你的沒有引用,所以才有腳本錯誤吧)
資源url用Page.ClientScript.GetWebResourceUrl方法取到
RegisterClientScriptResource

Ⅱ c# 自定義控制項製作

看下資料吧:
自己開發的WinForm控制項通常有三種類型:復合控制項(Composite Controls),擴展控制項(Extended Controls),自定義控制項(Custom Controls)。
復合控制項:將現有的各種控制項組合起來,形成一個新的控制項,將集中控制項的功能集中起來。
擴展控制項:在現有控制項的控制項的基礎上派生出一個新的控制項,為原有控制項增加新的功能或者修改原有控制項的控能。
自定義控制項:直接從System.Windows.Forms.Control類派生出來。Control類提供控制項所需要的所有基本功能,包括鍵盤和滑鼠的事件處理。自定義控制項是最靈活最強大的方法,但是對開發者的要求也比較高,你必須為Control類的OnPaint事件寫代碼,你也可以重寫Control類的WndProc方法,處理更底層的Windows消息,所以你應該了解GDI+和Windows API。
本系列文章主要介紹自定義控制項的開發方法。
控制項(可視化的)的基本特徵:
1. 可視化。
2. 可以與用戶進行交互,比如通過鍵盤和滑鼠。
3. 暴露出一組屬性和方法供開發人員使用。
4. 暴露出一組事件供開發人員使用。
5. 控制項屬性的可持久化。
6. 可發布和可重用。

參考資料一:http://www.cnblogs.com/hackenliu/archive/2008/07/23/1249885.html
參考資料二:http://blog.csdn.net/songkexin/article/details/4961215

Ⅲ 為什麼直接繼承view來自定義控制項時,需要重寫onmeasure方法並設置wrap

描述View本身大小的多少!自定義View的時候重載onMeasure(),onLayout(),onDraw()三個函數構建了自定義View的外觀形象。再加上onTouchEvent()等重載視圖的行為,可以構建任何我們需要的可感知到的自定義View。我們知道,不管是自定義View還是系統提供的TextView這些,它們都必須放置在LinearLayout等一些ViewGroup中,因此理論上我們可以很好的理解onMeasure(),onLayout(),onDraw()這三個函數:1.View本身大小多少,這由onMeasure()決定;2.View在ViewGroup中的位置如何,這由onLayout()決定;3.繪制View,onDraw()定義了如何繪制這個View。

Ⅳ 如何開發finereport的自定義控制項

1、實例化一個注冊控制項的介面

packagecom.hg.free.plugin.customcombo.param;

importcom.fr.design.designer.creator.XComboBox;
importcom.fr.design.fun.impl.;
importcom.fr.form.ui.Widget;

{

@Override
publicClass<?extendsWidget>classForWidget(){
returnCustomComboBox.class;
}

@Override
publicClass<?>appearanceForWidget(){
returnXComboBox.class;
}

@Override
publicStringiconPathForWidget(){
return"/com/fr/web/images/combobox.png";
}

@Override
publicStringnameForWidget(){
return"自定義下拉框";
}

}

2、重寫控制項類

packagecom.hg.free.plugin.customcombo.param;

importcom.fr.form.ui.ComboBox;
importcom.fr.ui.DataFilter;

{

=7169771062153345236L;

@Override
publicStringgetXType(){
return"customcombo";
}

@Override
(){
();
}
}

因為要改變過濾方式,就要重寫一個過濾器

packagecom.hg.free.plugin.customcombo.param;

importcom.fr.form.ui.ComboBoxDataFilter;

{
@Override
publicbooleanisMatch(Stringtxt,Stringfilter){
if(null==txt&&null!=filter)returnfalse;
if(null==txt&&null==filter)returntrue;
returntxt.indexOf(filter)!=-1;
}
}

3、繼承前端控制項js

;
(function($){
FR.CustomComboBoxEditor=FR.extend(FR.ComboBoxEditor,{
_init:function(){
FR.CustomComboBoxEditor.superclass._init.apply(this,arguments);
}
});
$.shortcut("customcombo",FR.CustomComboBoxEditor);
})(jQuery);

然後寫個xml用ant打包成插件就可以了。

Ⅳ 如何重寫自定義控制項里的事件

使用OnPaint事件可以隨時繪制圖形 調用窗體的OnPaint事件protected override void OnPaint(PaintEventArgs e){ base.OnPaint(e); //繪圖} 但是如何重寫控制項的OnPaint事件呢?比如說繪圖是在PictureBox中繪制的,那麼如何重寫PictureBox的OnPaint事件? 我們無法直接在窗體的代碼中重寫控制項的OnPaint事件,只能重寫窗體的OnPaint事件。 重寫控制項的OnPaint事件,必須創建一個新的控制項。這個控制項繼承Windows的控制項,然後在創建的控制項中重寫控制項的OnPaint事件。 以PictureBox為例: //定義一個新的控制項,繼承PictureBox控制項 public class myPictureBox : PictureBox { //自定義控制項的構造函數 public myPictureBox() { } //重寫控制項的OnPaint屬性 protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); //繪圖 } } 使用這種方法,就可以重寫任何一個控制項的OnPaint事件了。

Ⅵ asp.net 自定義控制項

先貼源代碼~一會再解釋~

新建一個類庫/伺服器控制項項目,添加TextBox.cs文件,復制以下代碼~
TextBox.cs

using System.Collections.Specialized;

namespace MyControl
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:TextBox runat=server></{0}:TextBox>")]
public class TextBox : WebControl,IPostBackDataHandler
{
#region //event
public event EventHandler TextChanged;
#endregion

#region //Properties
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? "" : s);
}
set
{
ViewState["Text"] = value;
}
}
#endregion

#region //Render Engine
protected override HtmlTextWriterTag TagKey
{
get
{
return HtmlTextWriterTag.Input;
}
}
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
writer.AddAttribute(HtmlTextWriterAttribute.Type, "text");
writer.AddAttribute(HtmlTextWriterAttribute.Name, this.UniqueID);
writer.AddAttribute(HtmlTextWriterAttribute.Value, Text);
base.AddAttributesToRender(writer);
}
#endregion

#region //realize the interface IPostBackDataHandler
public bool LoadPostData(string postDataKey, NameValueCollection postCollection)
{
if (postCollection[postDataKey] != Text)
{
Text = postCollection[postDataKey];
return true;
}
return false;
}

public void RaisePostDataChangedEvent()
{
if (TextChanged != null)
TextChanged(this, EventArgs.Empty);
}
#endregion
}
}

測試自定義控制項的步驟:
右鍵項目,選擇【生成】

新建一個網站,新建/Bin目錄,右鍵【添加引用】,導航到上一個新建的項目的.ddl文件。

default.aspx的源代碼:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<%@ Register Assembly="MyControl" Namespace="MyControl" TagPrefix="lark" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>無標題頁</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<lark:TextBox runat="server" ID="tbInput" OnTextChanged="tbInput_TextChanged"></lark:TextBox>
<asp:Button ID="btnSubmit" runat="server" Text="提交" />
<asp:Label ID="lblShowInput" runat="server" ></asp:Label>
</div>
</form>
</body>
</html>

default.aspx.cs
protected void tbInput_TextChanged(object sender,EventArgs e)
{
lblShowInput.Text = "您輸入的是:" + tbInput.Text;
}

==============源代碼部分(完)===================

下面隨便解釋下源代碼哈~
1。自定義控制項其實就是個類,該類繼承自WebControl類,同時實現IPostBackDataHandler介面~
2。添加自定義屬性Text,並將之存儲在控制項的ViewState集合中~
3。添加自定義事件TextChanged
4。編寫控制項的生成引擎:
重寫TagKey屬性為INPUT,以修改外圍標記
重寫AddAttributeToRender()方法,為外圍標記<input/>添加type value name屬性。

5。實現IPostBackDataHandler介面的兩個方法:
LoadPostData():接收投遞的表單值,用於更新Text屬性值。若屬性值變化,返回true,自動調用RaisePostDataChangedEvent()方法。
RaisePostDataChangedEvent()方法中激活TextChanged事件~

以上~

自定義控制項是ASP.NET中比較難懂的概念了~但是一旦掌握了的話,對之前ASP.NET的許多知識點都會有質的飛躍哦~

Ⅶ android自定義控制項繼承View,其中父類的三個構造方法有什麼區別

在代碼里new的話一般用一個參數的,
寫在xml里的 調用2個參數的 attr里邊傳過來的是 xml里邊對應的height width等參數,包括自己定義的參數,如果在xml里邊寫入自定義控制項的話 必須要重寫2個參數的構造函數

第3個參數不熟,傳style的吧貌似

Ⅷ android 自定義view要重寫哪幾個方法

很多的Android入門程序猿來說對於Android自定義View,可能都是比較恐懼的,但是這又是高手進階的必經之路,所有準備在自定義View上面花一些功夫,多寫一些文章。先總結下自定義View的步驟: 1、自定義View的屬性 2、在View的構造方法中獲得我們自定義的屬性 [ 3、重寫onMesure ] 4、重寫onDraw 我把3用[]標出了,所以說3不一定是必須的,當然了大部分情況下還是需要重寫的。 詳見網址:blog/lmj623565791/article/details/24252901

閱讀全文

與自定義控制項通常要重寫哪些方法相關的資料

熱點內容
如何引出論點的方法 瀏覽:638
常用手術器材辨認及使用方法 瀏覽:959
青毛豆怎麼腌制方法 瀏覽:812
w7開機運行設置在哪裡設置方法 瀏覽:361
新買的平板電腦正確的充電方法 瀏覽:88
電纜橋架快速連接方法 瀏覽:781
農村扎發簡單方法 瀏覽:514
彩鋼大棚安裝方法 瀏覽:40
簡述嬰兒心理研究的主要方法 瀏覽:39
測定亞硫酸鹽的常用方法 瀏覽:492
縮陰啞鈴怎樣使用方法 瀏覽:969
快速練好薩克斯的方法 瀏覽:993
切線釣魚的正確方法 瀏覽:475
鐵路工程成本分析方法主要有哪些 瀏覽:289
548除以72的簡便計算方法 瀏覽:373
之大聖歸來畫法最簡單的方法 瀏覽:535
商品品種名稱及命名方法有哪些 瀏覽:443
胸針的使用方法 瀏覽:252
分控開關的安裝方法 瀏覽:701
引流袋寶塔頭尿袋連接軟管的方法 瀏覽:916