这是一个习惯的纯物质。我一直在使用Visual Studio C ++对话框设计多年。所以现在我在2010年VS .NET程序C#窗体设计工作。
我说,我有以下两个控件:
我需要对齐顶部一个相匹配的底部。因此,在VS C ++设计师,我会第一个点击,我想调整,然后按Ctrl +点击,我想调整到控件,然后选择“对齐左派”工具栏按钮控制:
这完全是有道理的。
但是,现在在VS 2010中,我要完全做到在这个过程反过来,即先选择要对齐,然后选择对齐控制的控制。我知道我挑剔这里,但是这完全打乱了我。我经常做错误的顺序,然后还要撤消和重做一遍。修辞吆喝,通常出来就是,“为什么,微软!为什么呢?”但是,这是不是在这里我的问题。
有一些设置,或者可以在注册表修复,使其像VS C ++设计用来工作?
有一个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;