簡體   English   中英

創建帶有單擊\\雙擊事件的asp.net列表框

[英]create asp.net listbox with click\double click event

我試圖創建一個具有單擊evet的asp.net列表框。 為此,我創建了一個項目,該項目創建了一個dll文件,該文件已添加到Visual Studio 2008的工具箱中。它不起作用! 這是創建dll文件的代碼:

namespace list_box
{
    public class list_box : ListBox, IButtonControl
    {
        private bool blCausesValidation = true;
        private string strCommandArgument = "";
        private string strCommandName = "";
        private string strPostBackUrl = "";
        private string strText = "";
        private string strValidationGroup = "";

        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            this.CssClass = "frmbtn";
        }

        bool IButtonControl.CausesValidation
        {
            get
            {
                return blCausesValidation;
            }
            set
            {
                blCausesValidation = value;
            }
        }

        string IButtonControl.CommandArgument
        {
            get
            {
                return strCommandArgument;
            }
            set
            {
                strCommandArgument = value;
            }
        }

        string IButtonControl.CommandName
        {
            get
            {
                return strCommandName;
            }
            set
            {
                strCommandName = value;
            }
        }

        string IButtonControl.PostBackUrl
        {
            get
            {
                return strPostBackUrl;
            }
            set
            {
                strPostBackUrl = value;
            }
        }

        string IButtonControl.Text
        {
            get
            {
                return strText;
            }
            set
            {
                strText = value;
            }
        }

        string IButtonControl.ValidationGroup
        {
            get
            {
                return strValidationGroup;
            }
            set
            {
                strValidationGroup = value;
            }
        }


        public event EventHandler Click;

        void click_i(object sender, EventArgs e)
        {
            OnClick(new EventArgs());
        }

        protected virtual void OnClick(EventArgs e)
        {
            if (Click != null)
            {
                click_i(this, e);
            }
        }

        public event CommandEventHandler Command;

        void Command_i(object sender, CommandEventArgs e)
        {
            OnCommand(new CommandEventArgs(e));
        }

        protected virtual void OnCommand(CommandEventArgs e)
        {
            if (Command != null)
            {
                Command_i(this, e);
            }
        }
    }
}

幫我!!!! 我是asp.net的新手,所以...

關於代碼,您應該了解兩件事:

  1. 為了使其正常工作,您必須在控件內的任何位置(無論何時要觸發事件)都調用OnClick。

  2. 您在兩個事件中都編碼了循環引用。

更改此:

protected virtual void OnClick(EventArgs e)
{
    if (Click != null)
    {
        click_i(this, e);
    }
}

對此:

protected virtual void OnClick(EventArgs e)
{
    if (Click != null)
    {
        click(this, e);
    }
}

並刪除此:

void click_i(object sender, EventArgs e)

然后,您所要做的就是將此添加到控件中(同樣,無論您希望事件觸發到哪里:

this.OnClick(new EventArgs());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM