Ⅰ 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