使用click \ double click事件创建asp.net列表框

时间:2009-12-04 20:48:28

标签: c# asp.net dll

我尝试创建一个具有点击率的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 个答案:

答案 0 :(得分:0)

您应该了解有关代码的两件事:

  1. 为了使其正常工作,您必须从控件中的某个位置调用OnClick(无论何时您希望触发事件)。

  2. 您在两个活动中都编码了循环引用。

  3. 改变这个:

    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());