2013-02-10 36 views
4

我在VS2012和要使用的拉姆達格式事件處理,但確實VS用tab鍵自動完成,只要你通過+ =,如類型的事件subscrition:的Visual Studio自動完成事件處理程序的λ格式

VS自動完成與一個函數的引用插入功能:

txtTitle.TextChanged += txtTitle_TextChanged; 

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

有沒有什麼辦法來強制自動完成與Lambda格式文件:

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

它是一種巨大的痛苦不得不從自動完成的非lambda複製和粘貼到更緊密的lambda格式。

+2

你可以使用類型的拉姆達參數,因爲編譯器推斷。 'Resharper'建議你使用lambda格式的處理程序。 – 2013-02-10 19:23:40

+0

+1 @HamletHakobyan – 2013-02-10 21:39:54

回答

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> 

然後只使用鍵入事件名稱+ =勒標籤

加載+ =文件選項卡

結果

Loaded += (s, e) => { }; 
+0

哇!這真是太神奇了......我最懶,也不知道片段。萬分感謝! – frigon 2013-02-10 21:44:06

0

你可以寫:

this.txtTitle.TextChanged += (s, e) => {}; 
+0

是的 - 我知道格式,但我不想複製和粘貼。我想知道是否可以將Visual Studio配置爲自動完成(通過選項卡或其他)到此格式。 – frigon 2013-02-10 20:10:56

相關問題