天天看點

dsoframer控件的學習

根據自己對dsoframer控件的學習,想把dsoframer控件進行簡單的包裝為C#的usercontrol,大體需要作如下:

1.使用前注冊該dsoframer控件,我把該dso控件當作嵌入資源,用學習筆記1中的方法注冊即可

dsoframer控件的學習
dsoframer控件的學習

Code

 /// <summary>

  /// usercontrol控件初始化

  /// </summary>

  /// <param name="_sFilePath">本地檔案全路徑</param>

  public void Init(string _sFilePath)

  {

   try

   {

    RegControl();//注冊控件

    if(!CheckFile(_sFilePath))//判斷是否為所支援的office檔案

    {

     throw new ApplicationException("檔案不存在或未辨別的檔案格式!");

    }

    AddOfficeControl();//這裡一定要先把dso控件加到界面上才能初始化dso控件,這個dso控件在沒有被show出來之前是不能進行初始化操作的,很奇怪為什 

        //麼作者這樣考慮

dsoframer控件的學習

..

    InitOfficeControl(_sFilePath);

   }

   catch(Exception ex)

    throw ex;

  }

  public bool RegControl()

      try

      {

        Assembly thisExe = Assembly.GetExecutingAssembly();

        System.IO.Stream myS = thisExe.GetManifestResourceStream("NameSpaceName.dsoframer.ocx");

        string sPath = “該ocx檔案的實際路徑”+ @"/dsoframer.ocx";

        ProcessStartInfo psi = new ProcessStartInfo("regsvr32","/s " +sPath);

        Process.Start(psi);

      }

      catch(Exception ex)

        MessageBox.Show(ex.Message);

     return true;

2.動态向usercontrol添加dsoframer執行個體

                private AxDSOFramer.AxFramerControl m_axFramerControl = new AxDSOFramer.AxFramerControl();

  /// <summary>

  /// 添加控件

  private void AddOfficeControl()

    this.m_Panel_Control.Controls.Add(m_axFramerControl);

    m_axFramerControl.Dock = DockStyle.Fill;

3.初始化dsoframer控件 ,我這裡用已經有的檔案進行dso初始化,

  /// 初始化office控件

  /// <param name="_sFilePath">本地文檔路徑</param>

  private void InitOfficeControl(string _sFilePath)

    if(m_axFramerControl == null)

     throw new ApplicationException("請先初始化office控件對象!");

    string sExt = System.IO.Path.GetExtension(_sFilePath).Replace(".","");

    //this.m_axFramerControl.CreateNew(this.LoadOpenFileType(sExt));//建立新的檔案

    this.m_axFramerControl.Open(_sFilePath,false,this.LoadOpenFileType(sExt),"","");//打開檔案

    //隐藏标題

    this.m_axFramerControl.Titlebar = false;

     下面這個方法是dso打開檔案時需要的一個參數,代表office檔案類型

  /// 根據字尾名得到打開方式

  /// <param name="_sExten"></param>

  /// <returns></returns>

  private string LoadOpenFileType(string _sExten)

    string sOpenType = "";

    switch (_sExten.ToLower())

     case "xls":

      sOpenType = "Excel.Sheet";

      break;

     case "doc":

      sOpenType = "Word.Document";

     case "ppt":

      sOpenType = "PowerPoint.Show";

     case "vsd":

      sOpenType = "Visio.Drawing";

     default:

    return sOpenType;

   catch (Exception ex)

4.我覺的最重要的一步,就是公布dso目前的活動對象,因為自己做這個usercontrol功能不強,但是不能把人家dso功能給殺掉,給使用者留一個更大的空間。。。。

  /// 擷取目前操作的文檔

  public object ActiveDocument

   get

    return this.m_axFramerControl.ActiveDocument;

  /// 擷取目前控件對象

  public AxDSOFramer.AxFramerControl OfficeObject

    return this.m_axFramerControl;

  /// 儲存

  public void Save()

    //先儲存

    this.m_axFramerControl.Save(true,true,"","");

  } 

  /// 另存為

  public void SaveAs()

    //另存為

    SaveFileDialog sfd = new SaveFileDialog();

    string sExt = System.IO.Path.GetExtension(this.m_sFilePath).Replace(".","");

    sfd.Filter = sExt;

    if(sfd.ShowDialog() == DialogResult.OK)

     string sSavePath = sfd.FileName;

     if(System.IO.File.Exists(sSavePath))

     {

      System.IO.File.Delete(sSavePath);

     }

     this.m_axFramerControl.SaveAs(sSavePath,this.LoadOpenFileType(sExt));

  /// 關閉目前界面

  public void Close()

    if(this.m_axFramerControl != null)

     this.m_axFramerControl.Close();

版權說明

  如果标題未标有<轉載、轉>等字則屬于作者原創,歡迎轉載,其版權歸作者和部落格園共有。

  作      者:溫景良

dsoframer控件的學習
dsoframer控件的學習

<a href="http://home.cnblogs.com/u/wenjl520/">溫景良(Jason)</a>

<a href="http://home.cnblogs.com/u/wenjl520/followees">關注 - 32</a>

<a href="http://home.cnblogs.com/u/wenjl520/followers">粉絲 - 161</a>

<a>+加關注</a>

<a></a>

Post Comment

正在給頭兒逼着看這個控件的代碼,不知道從哪兒入手,看得人一頭霧水,能否指點一二,謝謝!!

<a href="http://www.ucancode.com/index.htm" target="_blank">【推薦】超50萬VC++源碼: 大型工控、組态\仿真、模組化CAD源碼2018!</a>

<a href="https://dnspod.cloud.tencent.com/act/yearendsales?from=IT&amp;fromSource=gwzcw.741110.741110.741110" target="_blank">【推薦】騰訊雲新使用者域名搶購1元起,抓緊搶購</a>

dsoframer控件的學習

<b>最新IT新聞</b>:

dsoframer控件的學習

<b>最新知識庫文章</b>: