在VS 2010的设计师控制排列顺序相反

问题描述 投票:3回答:1

这是一个习惯的纯物质。我一直在使用Visual Studio C ++对话框设计多年。所以现在我在2010年VS .NET程序C#窗体设计工作。

我说,我有以下两个控件:

我需要对齐顶部一个相匹配的底部。因此,在VS C ++设计师,我会第一个点击,我想调整,然后按Ctrl +点击,我想调整到控件,然后选择“对齐左派”工具栏按钮控制:

这完全是有道理的。

但是,现在在VS 2010中,我要完全做到在这个过程反过来,即先选择要对齐,然后选择对齐控制的控制。我知道我挑剔这里,但是这完全打乱了我。我经常做错误的顺序,然后还要撤消和重做一遍。修辞吆喝,通常出来就是,“为什么,微软!为什么呢?”但是,这是不是在这里我的问题。

有一些设置,或者可以在注册表修复,使其像VS C ++设计用来工作?

c# visual-studio winforms visual-studio-2010 windows-forms-designer
1个回答
0
投票

有一个ISelectionService这有助于获取或设置选定的组件,并通知时,选择更改。

您可以通过处理服务的SelectionChanged事件如下达到预期的行为:

private void SelectionSVC_SelectionChanged(object sender, EventArgs e)
{
    var selectionSVC = sender as ISelectionService;
    if (selectionSVC == null) return;
    try
    {
        selectionSVC.SelectionChanged -= SelectionSVC_SelectionChanged;
        if ((Control.ModifierKeys & (Keys.Shift | Keys.Control)) > Keys.None)
        {
            var selection = selectionSVC.GetSelectedComponents()
                .Cast<object>().LastOrDefault();
            if (selection != null)
                selectionSVC.SetSelectedComponents(new[] { selection },
                    SelectionTypes.Primary | SelectionTypes.Add);
        }
    }
    finally
    {
        selectionSVC.SelectionChanged += SelectionSVC_SelectionChanged;
    }
}

获取服务的实例,取决于上下文。用于在设计器窗口使用VS封装,具有IdesignerHost的实例例如:

var selectionSVC = (ISelectionService)host.GetService(typeof(ISelectionService));
if (selectionSVC != null)
    selectionSVC.SelectionChanged += SelectionSVC_SelectionChanged;
© www.soinside.com 2019 - 2024. All rights reserved.