Visual Studio 2010中自动格式化lambda函数

7
如何设置Visual Studio 2010,使多行lambda函数不会在左侧留下太多空白,从而使其看起来更加美观?
   dataView.CellFormatting += (s, e) =>
                                           {
                                               if ((e.ColumnIndex == 1)&&((dataView.SelectedCells.Count == 1)))
                                               {    
                                                   var scope = Scope.Instance;    
                                                   var row = dataView.Rows[e.RowIndex];
                                                   var variable = row.DataBoundItem as Variable;

                                                   if (scope.Variables.Contains(variable))
                                                   {
                                                       dataView[e.ColumnIndex, e.RowIndex].Style.BackColor =
                                                           scope.GetGraph(variable).Color;
                                                   }

                                                   else
                                                   {
                                                       dataView[e.ColumnIndex, e.RowIndex].Style.BackColor = Color.White;
                                                   }
                                               }
                                           };

2
我无法想象你试图表达什么。也许一个示例片段(之前和之后)会有所帮助。 - BoltClock
我编辑了我的问题。那就是我的意思。 - Peter17
R#?有没有一种标记代码的方法,告诉ReSharper不要对其进行格式化? - steamer25
2个回答

2
这取决于您认为多少空白是丑陋的,但可以做的一件事是在等号后面按回车键。然后您将得到类似于这样的结果。`
   {
        var raw_custs =
            (from customer in GetActive()
             where customer.Name.Contains(name)
             select customer).Take(numberToGet).ToList();

我通常在进行这样的更改后按下CTRL-E CTRL-D,使文档自动格式化(编辑->高级->格式化文档)。

(刚刚看到你修改的帖子 - 在我的VS中输入+=后按回车键)

dataView.CellFormatting +=
    (s, e) =>
    {
        if ((e.ColumnIndex == 1) && ((dataView.SelectedCells.Count == 1)))
        {
            var scope = Scope.Instance;
            var row = dataView.Rows[e.RowIndex];
            var variable = row.DataBoundItem as Variable;

            if (scope.Variables.Contains(variable))
            {
                dataView[e.ColumnIndex, e.RowIndex].Style.BackColor =
                    scope.GetGraph(variable).Color;
            }

            else
            {
                dataView[e.ColumnIndex, e.RowIndex].Style.BackColor = Color.White;
            }
        }

谢谢,按回车键确实有帮助。 - Peter17
不客气,你也可以在“工具”->“选项”->“文本编辑器”->“C#”->“格式设置”->“缩进”下玩一下设置(哇!)。我知道我已经取消了缩进打开关闭括号选项。 - Tod

1

这很奇怪——缩进不应该那么深。

尝试剪切并粘贴到原位置,Visual Studio应该能在粘贴时为您修复。这是我得到的结果:

dataView.CellFormatting += (s, e) =>
{
    if ((e.ColumnIndex == 1) && ((dataView.SelectedCells.Count == 1)))
    {
        var scope = Scope.Instance;
        var row = dataView.Rows[e.RowIndex];
        var variable = row.DataBoundItem as Variable;

        if (scope.Variables.Contains(variable))
        {
            dataView[e.ColumnIndex, e.RowIndex].Style.BackColor =
                scope.GetGraph(variable).Color;
        }

        else
        {
            dataView[e.ColumnIndex, e.RowIndex].Style.BackColor = Color.White;
        }
    }
};

是的,复制粘贴可以工作。但是它并不是非常方便。 - Peter17
我发现我必须按Ctrl-K-D(或Ctrl-E-D)几次才能正确格式化Lambda表达式... 它似乎对它们有些困难。 - Ads

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接