📄 tabledesignerdoc.cs
字号:
}
}
private void _dataGrid_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
_dataGrid.EndEdit();
if (e.Button == MouseButtons.Right)
{
IVsUIShell shell = _serviceProvider.GetService(typeof(IVsUIShell)) as IVsUIShell;
if (shell != null)
{
Guid guid;
POINTS[] p = new POINTS[1];
int ret;
p[0].x = (short)Control.MousePosition.X;
p[0].y = (short)Control.MousePosition.Y;
guid = new Guid("732abe74-cd80-11d0-a2db-00aa00a3efff");
ret = shell.ShowContextMenu(0, ref guid, 259, p, this);
}
}
}
private void _dataGrid_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == -1 && e.RowIndex == -1)
{
_dataGrid.EndEdit();
}
_dataGrid_SelectionChanged(sender, e);
}
private void _dataGrid_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.ColumnIndex > -1 || e.RowIndex < 0) return;
Column col = _dataGrid.Rows[e.RowIndex].Tag as Column;
if (col == null) return;
if (col.PrimaryKey.Enabled == true)
{
e.Paint(e.ClipBounds, DataGridViewPaintParts.All);
_imageList.Draw(e.Graphics, e.CellBounds.Left, e.CellBounds.Top + ((e.CellBounds.Bottom - e.CellBounds.Top) - _imageList.ImageSize.Height) / 2, 0);
e.Handled = true;
}
}
private void _dataGrid_SelectionChanged(object sender, EventArgs e)
{
List<object> items = new List<object>();
for (int n = 0; n < _dataGrid.Rows.Count; n++)
{
if (_dataGrid.Rows[n].Selected || (_dataGrid.CurrentCell.RowIndex == n && _dataGrid.IsCurrentCellInEditMode == true))
{
if (_dataGrid.Rows[n].Tag != null)
items.Add(_dataGrid.Rows[n].Tag);
}
}
object[] objs = new object[items.Count];
items.CopyTo(objs);
_propertyGrid.SelectedObjects = objs;
}
private void _dataGrid_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
_propertyGrid.SelectedObjects = _propertyGrid.SelectedObjects;
}
private void _dataGrid_UserDeletedRow(object sender, DataGridViewRowEventArgs e)
{
_dataGrid_SelectionChanged(sender, e);
}
}
internal class FakeHierarchy : IVsUIHierarchy, IVsPersistHierarchyItem2
{
TableDesignerDoc _control;
IVsUIHierarchy _owner;
Dictionary<uint, IVsHierarchyEvents> _events = new Dictionary<uint, IVsHierarchyEvents>();
internal FakeHierarchy(TableDesignerDoc control, IVsUIHierarchy owner)
{
_control = control;
_owner = owner;
}
#region IVsUIHierarchy Members
int IVsUIHierarchy.AdviseHierarchyEvents(IVsHierarchyEvents pEventSink, out uint pdwCookie)
{
pdwCookie = 100;
while (_events.ContainsKey(pdwCookie))
pdwCookie++;
_events[pdwCookie] = pEventSink;
return VSConstants.S_OK;
}
int IVsUIHierarchy.Close()
{
return VSConstants.S_OK;
}
int IVsUIHierarchy.ExecCommand(uint itemid, ref Guid pguidCmdGroup, uint nCmdID, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
{
return VSConstants.E_NOTIMPL;
}
int IVsUIHierarchy.GetCanonicalName(uint itemid, out string pbstrName)
{
pbstrName = _control._table.Name;
return VSConstants.S_OK;
}
int IVsUIHierarchy.GetGuidProperty(uint itemid, int propid, out Guid pguid)
{
return _owner.GetGuidProperty(itemid, propid, out pguid);
}
int IVsUIHierarchy.GetNestedHierarchy(uint itemid, ref Guid iidHierarchyNested, out IntPtr ppHierarchyNested, out uint pitemidNested)
{
ppHierarchyNested = IntPtr.Zero;
pitemidNested = 0;
return VSConstants.E_NOTIMPL;
}
int IVsUIHierarchy.GetProperty(uint itemid, int propid, out object pvar)
{
pvar = null;
switch ((__VSHPROPID)propid)
{
case __VSHPROPID.VSHPROPID_AllowEditInRunMode:
pvar = true;
break;
case __VSHPROPID.VSHPROPID_CanBuildFromMemory:
pvar = true;
break;
case __VSHPROPID.VSHPROPID_Caption:
case __VSHPROPID.VSHPROPID_SaveName:
pvar = _control._table.Name;
break;
case __VSHPROPID.VSHPROPID_IsHiddenItem:
pvar = true;
break;
case __VSHPROPID.VSHPROPID_IsNewUnsavedItem:
pvar = true;
break;
case __VSHPROPID.VSHPROPID_ShowOnlyItemCaption:
pvar = true;
break;
case __VSHPROPID.VSHPROPID_IconImgList:
pvar = 0;
break;
case __VSHPROPID.VSHPROPID_IconHandle:
pvar = null;
return VSConstants.S_OK;
}
//switch ((__VSHPROPID2)propid)
//{
// case __VSHPROPID2.VSHPROPID_StatusBarClientText:
// pvar = "SQLite Table Editor";
// break;
//}
if (pvar == null)
return _owner.GetProperty(itemid, propid, out pvar);
else
return VSConstants.S_OK;
}
int IVsUIHierarchy.GetSite(out Microsoft.VisualStudio.OLE.Interop.IServiceProvider ppSP)
{
ppSP = null;
return VSConstants.E_NOTIMPL;
}
int IVsUIHierarchy.ParseCanonicalName(string pszName, out uint pitemid)
{
pitemid = 0;
return VSConstants.E_NOTIMPL;
}
int IVsUIHierarchy.QueryClose(out int pfCanClose)
{
pfCanClose = 1;
return VSConstants.S_OK;
}
int IVsUIHierarchy.QueryStatusCommand(uint itemid, ref Guid pguidCmdGroup, uint cCmds, OLECMD[] prgCmds, IntPtr pCmdText)
{
return VSConstants.E_NOTIMPL;
}
int IVsUIHierarchy.SetGuidProperty(uint itemid, int propid, ref Guid rguid)
{
return VSConstants.E_NOTIMPL;
}
int IVsUIHierarchy.SetProperty(uint itemid, int propid, object var)
{
foreach(IVsHierarchyEvents listener in _events.Values)
{
listener.OnPropertyChanged(itemid, propid, 0);
}
return VSConstants.S_OK;
}
int IVsUIHierarchy.SetSite(Microsoft.VisualStudio.OLE.Interop.IServiceProvider psp)
{
return VSConstants.E_NOTIMPL;
}
int IVsUIHierarchy.UnadviseHierarchyEvents(uint dwCookie)
{
_events.Remove(dwCookie);
return VSConstants.S_OK;
}
int IVsUIHierarchy.Unused0()
{
return VSConstants.E_NOTIMPL;
}
int IVsUIHierarchy.Unused1()
{
return VSConstants.E_NOTIMPL;
}
int IVsUIHierarchy.Unused2()
{
return VSConstants.E_NOTIMPL;
}
int IVsUIHierarchy.Unused3()
{
return VSConstants.E_NOTIMPL;
}
int IVsUIHierarchy.Unused4()
{
return VSConstants.E_NOTIMPL;
}
#endregion
#region IVsHierarchy Members
int IVsHierarchy.AdviseHierarchyEvents(IVsHierarchyEvents pEventSink, out uint pdwCookie)
{
return ((IVsUIHierarchy)this).AdviseHierarchyEvents(pEventSink, out pdwCookie);
}
int IVsHierarchy.Close()
{
return ((IVsUIHierarchy)this).Close();
}
int IVsHierarchy.GetCanonicalName(uint itemid, out string pbstrName)
{
return ((IVsUIHierarchy)this).GetCanonicalName(itemid, out pbstrName);
}
int IVsHierarchy.GetGuidProperty(uint itemid, int propid, out Guid pguid)
{
return ((IVsUIHierarchy)this).GetGuidProperty(itemid, propid, out pguid);
}
int IVsHierarchy.GetNestedHierarchy(uint itemid, ref Guid iidHierarchyNested, out IntPtr ppHierarchyNested, out uint pitemidNested)
{
return ((IVsUIHierarchy)this).GetNestedHierarchy(itemid, ref iidHierarchyNested, out ppHierarchyNested, out pitemidNested);
}
int IVsHierarchy.GetProperty(uint itemid, int propid, out object pvar)
{
return ((IVsUIHierarchy)this).GetProperty(itemid, propid, out pvar);
}
int IVsHierarchy.GetSite(out Microsoft.VisualStudio.OLE.Interop.IServiceProvider ppSP)
{
ppSP = null;
return VSConstants.E_NOTIMPL;
}
int IVsHierarchy.ParseCanonicalName(string pszName, out uint pitemid)
{
pitemid = 0;
return VSConstants.E_NOTIMPL;
}
int IVsHierarchy.QueryClose(out int pfCanClose)
{
return ((IVsUIHierarchy)this).QueryClose(out pfCanClose);
}
int IVsHierarchy.SetGuidProperty(uint itemid, int propid, ref Guid rguid)
{
return ((IVsUIHierarchy)this).SetGuidProperty(itemid, propid, ref rguid);
}
int IVsHierarchy.SetProperty(uint itemid, int propid, object var)
{
return ((IVsUIHierarchy)this).SetProperty(itemid, propid, var);
}
int IVsHierarchy.SetSite(Microsoft.VisualStudio.OLE.Interop.IServiceProvider psp)
{
return ((IVsUIHierarchy)this).SetSite(psp);
}
int IVsHierarchy.UnadviseHierarchyEvents(uint dwCookie)
{
return ((IVsUIHierarchy)this).UnadviseHierarchyEvents(dwCookie);
}
int IVsHierarchy.Unused0()
{
return VSConstants.E_NOTIMPL;
}
int IVsHierarchy.Unused1()
{
return VSConstants.E_NOTIMPL;
}
int IVsHierarchy.Unused2()
{
return VSConstants.E_NOTIMPL;
}
int IVsHierarchy.Unused3()
{
return VSConstants.E_NOTIMPL;
}
int IVsHierarchy.Unused4()
{
return VSConstants.E_NOTIMPL;
}
#endregion
#region IVsPersistHierarchyItem Members
int IVsPersistHierarchyItem.IsItemDirty(uint itemid, IntPtr punkDocData, out int pfDirty)
{
return ((IVsPersistDocData)_control).IsDocDataDirty(out pfDirty);
}
int IVsPersistHierarchyItem.SaveItem(VSSAVEFLAGS dwSave, string pszSilentSaveAsName, uint itemid, IntPtr punkDocData, out int pfCanceled)
{
return ((IVsPersistDocData)_control).SaveDocData(dwSave, out pszSilentSaveAsName, out pfCanceled);
}
#endregion
#region IVsPersistHierarchyItem2 Members
int IVsPersistHierarchyItem2.IgnoreItemFileChanges(uint itemid, int fIgnore)
{
return VSConstants.E_NOTIMPL;
}
int IVsPersistHierarchyItem2.IsItemDirty(uint itemid, IntPtr punkDocData, out int pfDirty)
{
return ((IVsPersistDocData)_control).IsDocDataDirty(out pfDirty);
}
int IVsPersistHierarchyItem2.IsItemReloadable(uint itemid, out int pfReloadable)
{
return ((IVsPersistDocData)_control).IsDocDataReloadable(out pfReloadable);
}
int IVsPersistHierarchyItem2.ReloadItem(uint itemid, uint dwReserved)
{
return ((IVsPersistDocData)_control).ReloadDocData(dwReserved);
}
int IVsPersistHierarchyItem2.SaveItem(VSSAVEFLAGS dwSave, string pszSilentSaveAsName, uint itemid, IntPtr punkDocData, out int pfCanceled)
{
return ((IVsPersistDocData)_control).SaveDocData(dwSave, out pszSilentSaveAsName, out pfCanceled);
}
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -