Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Visual Studio中使用自动代码完成时,是否有方法修改IntelliSense输入的代码?_C#_Visual Studio 2017_Intellisense - Fatal编程技术网

C# 在Visual Studio中使用自动代码完成时,是否有方法修改IntelliSense输入的代码?

C# 在Visual Studio中使用自动代码完成时,是否有方法修改IntelliSense输入的代码?,c#,visual-studio-2017,intellisense,C#,Visual Studio 2017,Intellisense,我想修改Visual Studio/Intellisense在按tab或tab时输入的自动填充代码 我已经尝试过在在线论坛和Microsoft文档中搜索,但还没有找到解决方案 例如,当我输入“MessageBox.s”并按tab键时,它将自动完成,并显示 MessageBox.Show 我想把它改成自动完成 MessageBox.Show(""); 这样,我就不必键入括号、引号和分号,从而节省了时间,我一直都会使用它们。在VisualStudio中有什么方法可以做到这一点吗?我正在使用Vis

我想修改Visual Studio/Intellisense在按tab或tab时输入的自动填充代码

我已经尝试过在在线论坛和Microsoft文档中搜索,但还没有找到解决方案

例如,当我输入“MessageBox.s”并按tab键时,它将自动完成,并显示

MessageBox.Show
我想把它改成自动完成

MessageBox.Show("");

这样,我就不必键入括号、引号和分号,从而节省了时间,我一直都会使用它们。在VisualStudio中有什么方法可以做到这一点吗?我正在使用Visual Studio Community 2017。或者是否有第三方加载项可用于自定义行为

Intellisense在后台编译代码,并自动完成属性、方法等。我想您应该看看代码片段,并定义一个适合您需要的代码片段


首先看一看
C:\Program Files(x86)\Microsoft Visual Studio 14.0\VC\snippets\1033\Visual C
中定义的代码段,我猜您已经这样做了,但要在Visual Studio 2010中编辑自动完成/智能感知设置,可以转到工具->选项…->文本编辑器->C#->智能感知

我可能没有回答你的确切问题,但我认为我可以解决根本问题

你试图解决的问题是,当你输入的内容非常频繁的时候,用更少的输入来写更多的内容

您的建议可能存在(编辑自动完成),但我一直使用的是Live模板。我使用的是Rider(不是VisualStudio),所以它可能被称为代码片段,但它正是您要问的

已有一些非常有用的示例,例如,如果您键入
cw
然后键入tab-tab,它将编写一个完整的
Console.WriteLine()并将光标放在括号中。你甚至可以添加变量和很多非常有用的东西。其他默认的实时模板是
foreach
+tab+tab,或
for
,或
switch
,您可以理解

无论如何,在您的设置中搜索“live templates”(或代码片段),您可以在其中添加任意数量的内容。然后,对于您的情况,您可以只编写
mb选项卡
,然后就可以开始了;)

我还建议您查看如何使用$VAR$、$SELECTION$$END$等自定义这些活动模板,以便最大限度地提高效率


还有,新年快乐。简短的回答是:是的。。。没有

据我所知,Visual Studio中有两种不同类型的自动填充代码:

  • 代码片段。存储在以.snippet结尾的文件中的代码块
  • 类及其方法
代码片段在VS文件中的不同位置(我的位置与施耐德的完全不同)。这些是类似于If语句的东西,并且可以打开和编辑文件。通过转到工具>代码段管理器>CSharp>Visual C#,可以在VS中找到文件夹/文件位置。对我来说是C:\ProgramFiles(x86)\Microsoft Visual Studio\2017\Community\VC\Snippets\1033\Visual C。 如果双击其中一个文件,就可以在VS中打开它并编辑代码,代码都是XML。如果要编辑填充的代码,请查找代码中带有“CDATA”的部分:


您可以在Microsoft文档中阅读更多有关语法的详细信息。但是,如果你想修改其他类型的自动填充内容——来自内置库的类和它们的方法——尽我所能做到最好,那是没有办法的;但是,在使用“快捷方式”创建自己的自定义代码段时,有一个变通方法。我发现从微软那里得到的信息有助于了解如何做到这一点。与文档相比,我不得不做一些不同的事情,因此我将在这里使用MessageBox进行解释

转到文件>新建>文件

当弹出“新建文件”窗口时,选择“XML文件”。

删除默认代码行并粘贴以下代码:

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>MessageBox.Show</Title>
      <Shortcut>mess</Shortcut>
    </Header>
    <Snippet>
      <References>
        <Reference>
          <Assembly>System.Windows.Forms.dll</Assembly>
        </Reference>
      </References>
      <Imports>
        <Import>
          <Namespace>System.Windows.Forms</Namespace>
        </Import>
      </Imports>
      <Code Language="CSharp">
        <![CDATA[MessageBox.Show("");]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

MessageBox.Show
混乱

选择您的语言(Csharp),然后单击导入

导航到刚才保存的MessageBox.Snippet文件,然后双击它。 此时将打开“导入代码段”对话框,要求您从右侧窗格中的选项中选择在何处添加代码段。选择之一应该是我的代码片段。选择它并单击Finish

单击“确定”关闭代码段管理器

您现在应该能够键入“mess”并填写自定义代码段。如果没有,您可以尝试关闭并重新打开您的项目或VS。Microsoft教程说您可以稍后添加快捷方式标记,但我尝试了这种方式,VS没有选择它,因此我必须使用快捷方式标记重新创建文件,然后导入它,它成功了

当然,您基本上可以使用相同的方法为您想要的任何内容创建代码段和快捷方式。您只需更改标题、快捷方式和代码(CDATA)标记中的文本,并将其保存在不同的文件名下

感谢Peter Schneider和Gil Sand的贡献。虽然你没有为我的问题提供一个直接的解决方案,但你确实帮助我找到了我想要的东西

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <Title>MessageBox.Show</Title>
      <Shortcut>mess</Shortcut>
    </Header>
    <Snippet>
      <References>
        <Reference>
          <Assembly>System.Windows.Forms.dll</Assembly>
        </Reference>
      </References>
      <Imports>
        <Import>
          <Namespace>System.Windows.Forms</Namespace>
        </Import>
      </Imports>
      <Code Language="CSharp">
        <![CDATA[MessageBox.Show("");]]>
      </Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>