亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tabledesignerdoc.cs

?? sqlite 3.3.8 支持加密的版本
?? CS
?? 第 1 頁 / 共 2 頁
字號:
namespace SQLite.Designer.Editors
{
  using System;
  using System.Collections.Generic;
  using System.ComponentModel;
  using System.Data;
  using System.Data.Common;
  using System.Drawing;
  using System.Text;
  using System.Windows.Forms;
  using Microsoft.VisualStudio.Shell.Interop;
  using Microsoft.VisualStudio.OLE.Interop;
  using Microsoft.VisualStudio;
  using Microsoft.VisualStudio.Data;
  using SQLite.Designer.Design;

  public partial class TableDesignerDoc : UserControl,
    IVsPersistDocData,
    IVsWindowPane,
    IOleCommandTarget,
    ISelectionContainer,
    IVsWindowPaneCommit,
    IVsWindowFrameNotify
  {
    private static Dictionary<int, string> _editingTables = new Dictionary<int, string>();
    
    internal DataConnection _connection;
    internal Microsoft.VisualStudio.Data.ServiceProvider _serviceProvider;
    internal Table _table;

    public TableDesignerDoc(DataConnection cnn, string tableName)
    {
      _connection = cnn;

      InitializeComponent();

      StringBuilder tables = new StringBuilder();

      using (DataReader reader = cnn.Command.Execute("SELECT * FROM sqlite_master", 1, null, 30))
      {
        while (reader.Read())
        {
          tables.Append(reader.GetItem(2).ToString());
          tables.Append(",");
        }
      }

      int n = 1;

      if (String.IsNullOrEmpty(tableName))
      {
        string alltables = tables.ToString();

        do
        {
          tableName = String.Format("Table{0}", n);
          n++;
        } while (alltables.IndexOf(tableName + ",", StringComparison.OrdinalIgnoreCase) > -1 || _editingTables.ContainsValue(tableName));

        _editingTables.Add(GetHashCode(), tableName);
      }
      _table = new Table(tableName, _connection.ConnectionSupport.ProviderObject as DbConnection, this);
    }

    void SetPropertyWindow()
    {
      IVsTrackSelectionEx track = _serviceProvider.GetService(typeof(SVsTrackSelectionEx)) as IVsTrackSelectionEx;
      if (track != null)
      {
        track.OnSelectChange(this);
      }
    }

    public new string Name
    {
      get
      {
        if (_table != null)
          return _table.Name;
        else return base.Name;
      }
      set
      {
        string caption = "SQLite:" + value;
        base.Name = value;

        if (_serviceProvider != null)
        {
          IVsWindowFrame frame = _serviceProvider.GetService(typeof(IVsWindowFrame)) as IVsWindowFrame;
          if (frame != null)
          {
            frame.SetProperty((int)__VSFPROPID.VSFPROPID_EditorCaption, value);
          }
        }
      }
    }

    //public void NotifyChanges()
    //{
    //  if (_serviceProvider == null) return;

    //  // Get a reference to the Running Document Table
    //  IVsRunningDocumentTable runningDocTable = (IVsRunningDocumentTable)_serviceProvider.GetService(typeof(SVsRunningDocumentTable));

    //  // Lock the document
    //  uint docCookie;
    //  IVsHierarchy hierarchy;
    //  uint itemID;
    //  IntPtr docData;
    //  int hr = runningDocTable.FindAndLockDocument(
    //      (uint)_VSRDTFLAGS.RDT_ReadLock,
    //      base.Name,
    //      out hierarchy,
    //      out itemID,
    //      out docData,
    //      out docCookie
    //  );
    //  ErrorHandler.ThrowOnFailure(hr);

    //  // Send the notification
    //  hr = runningDocTable.NotifyDocumentChanged(docCookie, (uint)__VSRDTATTRIB.RDTA_DocDataReloaded);

    //  // Unlock the document.
    //  // Note that we have to unlock the document even if the previous call failed.
    //  runningDocTable.UnlockDocument((uint)_VSRDTFLAGS.RDT_ReadLock, docCookie);

    //  // Check ff the call to NotifyDocChanged failed.
    //  ErrorHandler.ThrowOnFailure(hr);
    //}

    #region IVsPersistDocData Members

    int IVsPersistDocData.Close()
    {
      return VSConstants.S_OK;
    }

    public int GetGuidEditorType(out Guid pClassID)
    {
      return ((IPersistFileFormat)this).GetClassID(out pClassID);
    }

    public int IsDocDataDirty(out int pfDirty)
    {
      pfDirty = 1;
      return VSConstants.S_OK;
    }

    public int IsDocDataReloadable(out int pfReloadable)
    {
      pfReloadable = 0;
      return VSConstants.S_OK;
    }

    public int LoadDocData(string pszMkDocument)
    {
      return ((IPersistFileFormat)this).Load(pszMkDocument, 0, 0);
    }

    public int OnRegisterDocData(uint docCookie, IVsHierarchy pHierNew, uint itemidNew)
    {
      return VSConstants.S_OK;
    }

    public int ReloadDocData(uint grfFlags)
    {
      return VSConstants.E_NOTIMPL;
    }

    public int RenameDocData(uint grfAttribs, IVsHierarchy pHierNew, uint itemidNew, string pszMkDocumentNew)
    {
      return VSConstants.E_NOTIMPL;
    }

    public int SaveDocData(VSSAVEFLAGS dwSave, out string pbstrMkDocumentNew, out int pfSaveCanceled)
    {
      pbstrMkDocumentNew = _table.Name;
      pfSaveCanceled = 0;

      return VSConstants.S_OK;
    }

    public int SetUntitledDocPath(string pszDocDataPath)
    {
      return ((IPersistFileFormat)this).InitNew(0);
    }

    #endregion

    #region IVsWindowPane Members

    public int ClosePane()
    {
      this.Dispose(true);
      return VSConstants.S_OK;
    }

    public int CreatePaneWindow(IntPtr hwndParent, int x, int y, int cx, int cy, out IntPtr hwnd)
    {
      Win32Methods.SetParent(Handle, hwndParent);
      hwnd = Handle;

      Size = new System.Drawing.Size(cx - x, cy - y);
      return VSConstants.S_OK;
    }

    public int GetDefaultSize(Microsoft.VisualStudio.OLE.Interop.SIZE[] size)
    {
      if (size.Length >= 1)
      {
        size[0].cx = Size.Width;
        size[0].cy = Size.Height;
      }

      return VSConstants.S_OK;
    }

    public int LoadViewState(Microsoft.VisualStudio.OLE.Interop.IStream pStream)
    {
      return VSConstants.S_OK;
    }

    public int SaveViewState(Microsoft.VisualStudio.OLE.Interop.IStream pStream)
    {
      return VSConstants.S_OK;
    }

    public void RefreshToolbars()
    {
      if (_serviceProvider == null) return;

      IVsUIShell shell = _serviceProvider.GetService(typeof(IVsUIShell)) as IVsUIShell;

      if (shell != null)
      {
        shell.UpdateCommandUI(1);
      }
    }

    public int SetSite(Microsoft.VisualStudio.OLE.Interop.IServiceProvider psp)
    {
      _serviceProvider = new ServiceProvider(psp);
      return VSConstants.S_OK;
    }

    public int TranslateAccelerator(Microsoft.VisualStudio.OLE.Interop.MSG[] lpmsg)
    {
      return VSConstants.S_FALSE;
    }

    #endregion

    #region IOleCommandTarget Members

    public int Exec(ref Guid pguidCmdGroup, uint nCmdID, uint nCmdexecopt, IntPtr pvaIn, IntPtr pvaOut)
    {
      return (int)(Microsoft.VisualStudio.OLE.Interop.Constants.OLECMDERR_E_NOTSUPPORTED);
    }

    public int QueryStatus(ref Guid pguidCmdGroup, uint cCmds, OLECMD[] prgCmds, IntPtr pCmdText)
    {
      System.Diagnostics.Debug.WriteLine(pguidCmdGroup.ToString());

      if (pguidCmdGroup == VSConstants.GUID_VSStandardCommandSet97)
      {
        switch ((VSConstants.VSStd97CmdID)prgCmds[0].cmdID)
        {
          case VSConstants.VSStd97CmdID.PrimaryKey:
          case VSConstants.VSStd97CmdID.GenerateChangeScript:
            prgCmds[0].cmdf = (uint)(OLECMDF.OLECMDF_SUPPORTED | OLECMDF.OLECMDF_ENABLED);
            System.Diagnostics.Debug.Write(".");
            break;
          default:
            return (int)(Microsoft.VisualStudio.OLE.Interop.Constants.OLECMDERR_E_NOTSUPPORTED);
        }
        return VSConstants.S_OK;
      }

      if (pguidCmdGroup == SQLiteCommandHandler.guidDavinci)
      {
        switch (prgCmds[0].cmdID)
        {
          case (uint)VSConstants.VSStd97CmdID.ManageRelationships:
          case (uint)VSConstants.VSStd97CmdID.ManageIndexes:
          case (uint)VSConstants.VSStd97CmdID.ManageConstraints:
          //case 10: // Table View -> Custom
          //case 14: // Table View -> Modify Custom
          //case 33: // Database Diagram -> Add Table
          //case 1: // Database Diagram -> Add Related Tables
          //case 12: // Database Diagram -> Delete From Database
          //case 51: // Database Diagram -> Remove From Diagram
          //case 13: // Database Diagram -> Autosize Selected Tables
          //case 3: // Database Diagram -> Arrange Selection
          //case 2: // Database Diagram -> Arrange Tables
          //case 16: // Database Diagram -> Zoom -> 200%
          //case 17: // Database Diagram -> Zoom -> 150%
          //case 18: // Database Diagram -> Zoom -> 100%
          //case 19: // Database Diagram -> Zoom -> 75%
          //case 20: // Database Diagram -> Zoom -> 50%
          //case 21: // Database Diagram -> Zoom -> 25%
          //case 22: // Database Diagram -> Zoom -> 10%
          //case 24: // Database Diagram -> Zoom -> To Fit
          //case 6: // Database Diagram -> New Text Annotation
          //case 15: // Database Diagram -> Set Text Annotation Font
          //case 7: // Database Diagram -> Show Relationship Labels
          //case 8: // Database Diagram -> View Page Breaks
          //case 9: // Database Diagram -> Recalculate Page Breaks
          //case 43: // Database Diagram -> Copy Diagram to Clipboard
          //case 41: // Query Designer -> Table Display -> Column Names
          //case 42: // Query Designer -> Table Display -> Name Only
          //case 39: // Query Designer -> Add Table
          case 4: // Insert Column
          case 5: // Delete Column
            prgCmds[0].cmdf = (uint)(OLECMDF.OLECMDF_SUPPORTED | OLECMDF.OLECMDF_ENABLED);
            break;
          default:
            return (int)(Microsoft.VisualStudio.OLE.Interop.Constants.OLECMDERR_E_NOTSUPPORTED);
        }
        return VSConstants.S_OK;
      }

      return (int)(Microsoft.VisualStudio.OLE.Interop.Constants.OLECMDERR_E_NOTSUPPORTED);
    }

    #endregion

    #region ISelectionContainer Members

    int ISelectionContainer.CountObjects(uint dwFlags, out uint pc)
    {
      pc = 1;
      return VSConstants.S_OK;
    }

    int ISelectionContainer.GetObjects(uint dwFlags, uint cObjects, object[] apUnkObjects)
    {
      apUnkObjects[0] = _table;
      return VSConstants.S_OK;
    }

    int ISelectionContainer.SelectObjects(uint cSelect, object[] apUnkSelect, uint dwFlags)
    {
      apUnkSelect[0] = _table;
      return VSConstants.S_OK;
    }

    #endregion

    #region IVsWindowPaneCommit Members

    int IVsWindowPaneCommit.CommitPendingEdit(out int pfCommitFailed)
    {
      pfCommitFailed = 0;
      return VSConstants.S_OK;
    }

    #endregion

    #region IVsWindowFrameNotify Members

    int IVsWindowFrameNotify.OnDockableChange(int fDockable)
    {
      return VSConstants.S_OK;
    }

    int IVsWindowFrameNotify.OnMove()
    {
      return VSConstants.S_OK;
    }

    int IVsWindowFrameNotify.OnShow(int fShow)
    {
      switch ((__FRAMESHOW)fShow)
      {
        case __FRAMESHOW.FRAMESHOW_TabActivated:
        case __FRAMESHOW.FRAMESHOW_WinShown:
          SetPropertyWindow();
          break;
      }
      return VSConstants.S_OK;
    }

    int IVsWindowFrameNotify.OnSize()
    {
      return VSConstants.S_OK;
    }

    #endregion

    private void _dataGrid_CellEnter(object sender, DataGridViewCellEventArgs e)
    {
      if (e.ColumnIndex > -1)
      {
        _dataGrid.BeginEdit(true);
        _dataGrid_SelectionChanged(sender, e);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩你懂的| 亚洲成人一二三| 亚洲激情自拍视频| 日韩专区一卡二卡| 韩日欧美一区二区三区| 91在线无精精品入口| 欧美色综合影院| 精品国产乱码久久久久久久久| 国产丝袜欧美中文另类| 一区二区免费在线播放| 激情深爱一区二区| 日本高清免费不卡视频| 精品剧情v国产在线观看在线| 国产精品理伦片| 日韩av在线播放中文字幕| 国产99久久久久| 在线精品国精品国产尤物884a| 欧美不卡一区二区三区| 亚洲视频网在线直播| 青椒成人免费视频| av网站一区二区三区| 91精品国产一区二区三区香蕉| 中文字幕不卡三区| 青青国产91久久久久久| 成人av资源下载| 日韩欧美一卡二卡| 一区二区三区加勒比av| 国产99精品国产| 欧美一级在线观看| 亚洲婷婷在线视频| 国产精品资源在线观看| 欧美日韩国产色站一区二区三区| 国产视频一区在线观看| 日韩精品免费视频人成| 一本到一区二区三区| 久久久久久**毛片大全| 日韩中文字幕一区二区三区| 成人国产精品免费| 欧美精品一区二区三区久久久| 亚洲高清一区二区三区| 91在线视频播放地址| 国产婷婷精品av在线| 九九**精品视频免费播放| 欧美日本在线播放| 一区二区三区精品视频在线| 丁香桃色午夜亚洲一区二区三区| 日韩一级片在线观看| 亚洲激情五月婷婷| 成人av动漫网站| 国产亚洲视频系列| 久草中文综合在线| 日韩欧美在线影院| 午夜免费欧美电影| 欧洲亚洲国产日韩| 亚洲男人天堂av网| www.亚洲人| 国产精品久久久久久久久久免费看| 国产一区999| 久久综合精品国产一区二区三区| 免费成人在线影院| 日韩一区二区三区电影在线观看 | 高清国产一区二区| 国产调教视频一区| 国产999精品久久久久久| 久久久久久久国产精品影院| 国内精品不卡在线| 精品久久久久久久久久久久包黑料 | 久久国产乱子精品免费女| 欧美高清视频一二三区| 偷拍一区二区三区| 欧美精品丝袜中出| 日韩国产精品久久| 欧美一区二视频| 捆绑调教美女网站视频一区| 日韩午夜小视频| 黄色日韩三级电影| 国产丝袜在线精品| 不卡区在线中文字幕| 国产精品久99| 色综合天天综合网天天看片| 一区二区三区美女| 欧美疯狂性受xxxxx喷水图片| 五月综合激情网| 日韩区在线观看| 国产精品白丝av| 国产精品福利在线播放| 色一情一乱一乱一91av| 亚洲综合色自拍一区| 欧美三级中文字幕| 青青草原综合久久大伊人精品| 欧美mv日韩mv亚洲| 国产成人av在线影院| 中文字幕综合网| 欧美日韩精品一区二区三区四区 | 欧美日韩专区在线| 美国欧美日韩国产在线播放| 精品成人一区二区三区| 成人精品国产一区二区4080| 一区二区三区在线观看动漫| 欧美久久一区二区| 韩日av一区二区| 亚洲女爱视频在线| 91精品在线麻豆| 国产精品系列在线播放| 国产91精品入口| 中文字幕一区二区三区视频| 欧美亚洲国产一区在线观看网站| 日韩二区三区四区| 欧美经典一区二区| 欧洲国产伦久久久久久久| 美日韩一级片在线观看| 中文字幕欧美国产| 7799精品视频| 成人免费视频caoporn| 一区二区三区四区国产精品| 欧美一级淫片007| 成人激情免费电影网址| 日韩精品视频网| 中文字幕精品三区| 中文字幕亚洲电影| 制服.丝袜.亚洲.中文.综合| 国产精品伊人色| 亚洲成av人影院| 国产日韩欧美不卡| 精品视频一区二区三区免费| 国产成人综合视频| 亚洲国产另类av| 国产精品女同一区二区三区| 欧美理论在线播放| 成人av电影免费在线播放| 日韩高清在线一区| 亚洲欧美电影一区二区| 精品欧美乱码久久久久久1区2区| 色狠狠色狠狠综合| 国产91精品久久久久久久网曝门| 亚洲高清不卡在线观看| 国产精品伦一区| 日韩欧美激情在线| 色婷婷久久99综合精品jk白丝| 狠狠色狠狠色综合| 午夜欧美在线一二页| 亚洲婷婷国产精品电影人久久| 精品国产欧美一区二区| 欧美视频一区二区三区| 99久久精品免费观看| 精品无人区卡一卡二卡三乱码免费卡 | 久久精品国产99国产精品| 亚洲欧美一区二区三区极速播放| 亚洲精品在线一区二区| 91精品国产品国语在线不卡| 日本精品一区二区三区高清| 成人久久视频在线观看| 久久99国内精品| 全部av―极品视觉盛宴亚洲| 伊人婷婷欧美激情| 国产精品高清亚洲| 国产女主播一区| 精品国产制服丝袜高跟| 91精品福利在线一区二区三区| 欧美影片第一页| 91在线国内视频| aaa国产一区| 成人99免费视频| 成人免费av网站| 国产精品一品视频| 经典三级一区二区| 久久成人免费电影| 首页国产丝袜综合| 亚洲国产aⅴ成人精品无吗| 亚洲美女一区二区三区| 日韩一区在线看| 日韩一区有码在线| 亚洲欧洲三级电影| 国产精品美女一区二区在线观看| 国产日产欧美一区二区三区| 精品粉嫩aⅴ一区二区三区四区| 日韩三级精品电影久久久| 日韩一区二区三区av| 欧美一区二区美女| 日韩欧美123| 亚洲精品一区二区在线观看| 久久尤物电影视频在线观看| 337p日本欧洲亚洲大胆色噜噜| 欧美精品一区二区三区在线| 2023国产精华国产精品| 久久影视一区二区| 久久精品一区二区三区不卡 | 黄页视频在线91| 狠狠色丁香久久婷婷综合_中| 久久精品国产久精国产| 久久99在线观看| 国产福利一区二区三区在线视频| 国产激情91久久精品导航| 成人精品视频一区二区三区| 不卡av在线免费观看| 色综合久久久久| 欧美性大战xxxxx久久久| 欧美久久久久久久久久| 精品国产在天天线2019| 亚洲国产精品精华液2区45|