5

我在 VS2012 上并想使用 lambda 格式进行事件处理,但是每当您通过 += 键入事件订阅时,VS 都会使用 tab 键自动完成,例如:

VS 通过引用函数自动完成并插入函数:

txtTitle.TextChanged += txtTitle_TextChanged;

void txtTitle_TextChanged(object sender, TextChangedEventArgs e)
{
    ....
}

有没有办法强制使用 Lambda 格式自动完成:

txtTitle.TextChanged += (object sender, TextChangedEventArgs e) =>
{
    ....
}

必须从自动完成的非 lambda 复制和粘贴到更紧凑的 lambda 格式是一个巨大的痛苦。

4

2 回答 2

4

您可以只创建一个代码片段,我有一个用于创建 Lambda 事件。

如果您想尝试(只需保存为任何.snippet)并在VS中导入(工具->代码片段管理器),这里是片段

片段:

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
      <Title>SnippetFile1</Title>
      <Author>sa_ddam213</Author>
      <Description>
      </Description>
      <HelpUrl>
      </HelpUrl>
      <Shortcut>le</Shortcut>
    </Header>
    <Snippet>
      <Declarations>
        <Literal Editable="true">
          <ID>s</ID>
          <ToolTip>s</ToolTip>
          <Default>s</Default>
          <Function>
          </Function>
        </Literal>
        <Literal Editable="true">
          <ID>e</ID>
          <ToolTip>e</ToolTip>
          <Default>e</Default>
          <Function>
          </Function>
        </Literal>
      </Declarations>
      <Code Language="csharp" Kind="method body"><![CDATA[($s$,$e$) => { };]]></Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

然后使用只需键入eventname += le Tab

例子

已加载 += le 选项卡

结果

Loaded += (s, e) => { };
于 2013-02-10T21:33:45.907 回答
0

你可以写:

this.txtTitle.TextChanged += (s, e) => {};
于 2013-02-10T20:09:10.453 回答