none
winform裡覆寫複合控制項內某一按鈕的Click事件,取得DLL變數 RRS feed

  • 問題

  • VS 2010、C#

    各位前輩:

    我依照逐步解說:使用 Visual C# 撰寫複合控制項

    製件了自己所需的複合控制項

    主要是利用WebCam拍照,並把畫面存下來

    所以我已經在複合控制項內留有一個儲存按鈕

     protected virtual void btnSave_Click(object sender, System.EventArgs e)
            {
            }

    因為以後有可能是把取得的畫面存入資料庫或是使用者自選位置

    所以希望能覆寫這個按鈕事件

     

    我已經照HOW TO:封裝和安裝工具箱的自訂控制項

    把複合控制項加入工具列內

    當我新開一個WinForm專案

    直接將該複合控制項拖拉到WinForm內,並在程式碼內寫入

    //覆寫btnSave的儲存事件
            protected override void btnSave_Click(object sender, EventArgs e)
            {           
                base.btnSave_Click(sender, e);

                SaveFileDialog sf = new SaveFileDialog();
                sf.Filter = "圖檔|*.bmp";
                if (sf.ShowDialog() == DialogResult.OK)
                {
                    pic.Save(sf.FileName);
                }
            }

    但是base下找不到btnSave_Click(sender, e)事件

     

    另外我還設了一個 public Image pic變數

    存放取得的畫面

    再覆寫事件下要如何取得該變數?

     

     

    謝謝各位前輩的教導

    • 已移動 璉璉 2010年10月23日 上午 09:03 (從:Visual Studio一般討論區(General))
    2010年10月21日 上午 06:13

所有回覆

  • virtual與override是繼承關係.而你的Winform與元件是引用關係兩者是不同的.
    你的問題解法是,透過.Net的事件機制.
    在你設計的元件中建立一個事件,而winform註冊此事件

    請參閱
    http://msdn.microsoft.com/zh-tw/library/awbftdfh(VS.80).aspx

    2010年10月21日 上午 06:28
  • 移文至:

    Visual C#


    T.L. Cheng
    2010年10月23日 上午 09:02
  • dear
    因為這兩個控制項沒有繼承關係所以不能覆寫,你有提到說要傳資料到複合式控制項,所以你可以使用屬性來接收資料
    private string _SaveFolder;
    public string SaveFolder
    {
        get { return _SaveFolder; }
        set
        {
            _SaveFolder = value;
            //判斷資料夾是否存在
        }
    }


    或是複合式控制項寫一個開啟SaveFileDialog的公用方法,由Winform專案去呼叫這個方法

    秘訣無它,唯勤而已
    2010年10月23日 下午 01:48