Создать метод события для ярлыка управления - Visual Studio - PullRequest
3 голосов
/ 14 января 2009

Есть ли ярлык для добавления метода события для элемента управления? Если у меня есть кнопка, я хочу добавить метод Click без необходимости печатать ее или переключаться в режим конструктора.

EDIT: Шутки в сторону! Когда я делал это в VB, у меня был выпадающий список всех элементов управления и их событий. Это так сложно сделать для C #?

Ответы [ 3 ]

8 голосов
/ 14 января 2009

Winforms? WebForms? Что?

Один из вариантов - (после инициализации) перехватить событие, которое ваш self-intellisense предоставляет имя события, и [Tab] [Tab] создает метод-заглушку - т.е.

public MyForm()
{
    InitializeComponent()
    someButton.Click += (press [tab][tab] now)
}

и делает все остальное ... аналогично в веб-формах в соответствующем месте.

Это дает вам:

public MyForm()
{
    InitializeComponent();
    someButton.Click += new EventHandler(someButton_Click);
}

void someButton_Click(object sender, EventArgs e)
{
    throw new NotImplementedException(); // your code here ;-p
}
3 голосов
/ 14 января 2009

Вы изучали создание фрагмента? Вот фрагмент кода, который я использую для создания анонимных методов, которые подключаются к событию.

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>anonymous</Title>
            <Shortcut>__anonymous</Shortcut>
            <Description>Code snippet for an anonymous method</Description>
            <Author>Andrew</Author>
            <SnippetTypes>
                <SnippetType>Expansion</SnippetType>
            </SnippetTypes>
        </Header>
        <Snippet>
            <Declarations>
                <Literal>
                    <ID>event</ID>
                    <Default>base.Init</Default>
                    <ToolTip>Event to attach</ToolTip>
                </Literal>
                <Literal>
                    <ID>args</ID>
                    <Default>EventArgs</Default>
                    <ToolTip>Event argument type</ToolTip>
                </Literal>
                <Literal>
                    <ID>name</ID>
                    <Default>args</Default>
                    <ToolTip>Event arg instance name</ToolTip>
                </Literal>
            </Declarations>
            <Code Language="csharp"><![CDATA[$event$ += delegate(Object sender, $args$ $name$) {
                $end$
            };]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

Также вот статья , объясняющая, как их создать и как они работают.

1 голос
/ 14 января 2009
public partial class MyUserControl : System.Web.UI.UserControl
{

public delegate void ButtonClickEventHandler(object sender,EventArgs e);
public Event ButtonClickEventHandler Button_Click;

 protected void btnLogin_Click(object sender, EventArgs e)
        {
            if (Button_Click!= null)
                Button_Click(sender,e);
        }
}

Default.aspx

protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            MyUserControl.Button_Click+= MyUserControl_Button_Click;
        }

 void MyUserControl_Button_Click(object sender,EventArgs e)
        { }
...