DevExpress:帶按鈕的輸入框ButtonEdit

本文爲個人.NET控件庫DevExpress使用筆記,個人DevExpress版本爲13.1c#

一、控件類型全稱:DevExpress.XtraEditors.ButtonEdit編輯器

二、控件所在程序集:DevExpress.XtraEditors.v13.1.dll函數

三、工具箱內分類:DX.13.1: Common Controls工具

四、控件樣式截圖this

五、在屬性管理器中Properties下的Buttons裏,能夠進入EditorButton集合編輯器設置文本框右側的按鈕。文本框右側的按鈕能夠有不止一個,在EditorButton集合編輯器中均可以進行設置。在文本框右側的按鈕,都是DevExpress.XtraEditors.Controls.EditorButton類型的。code

六、在每一個按鈕的Kind屬性中,能夠設置按鈕的類型。按鈕類型保存在枚舉DevExpress.XtraEditors.Controls.ButtonPredefines中,該枚舉包括以下枚舉值(共計19個):事件

  • Close,一個x型圖案ip

  • SpinRight,方向指向右側的三角形箭頭get

  • SpinLeft,方向指向左側的三角形箭頭it

  • SpinDown,方向指向下側的三角形箭頭

  • SpinUp,方向指向上側的三角形箭頭

  • Combo,同SpinDown

  • Right,同SpinRight

  • Left,同SpinLeft

  • Up,同SpinUp

  • Down,同SpinDown

  • Glyph,圖案可由Image屬性指定

  • Ellipsis,省略號,三個點,默認圖案

  • Delete,一個x型圖案,線條比Close要細一些

  • OK,一個√型圖案

  • Plus,一個+型圖案

  • Minus,一個-型圖案

  • Redo,撤銷圖案,一個順時針轉動最後指向右側的箭頭

  • Undo,重作圖案,一個逆時針轉動最後指向右側的箭頭

  • DropDown,同SpinDown

其中,當Kind被設置爲Glyph時,能夠經過設置Image屬性來指定圖案

七、點擊按鈕的事件,能夠在屬性管理器中事件裏Properties下的ButtonClick事件中指定

這裏面就存在一個問題,若是文本框中放置了多個按鈕,該如何分辨出我點的是哪一個按鈕呢?

後來我發現,ButtonClick函數的傳入參數以下:

private void buttonEdit1_Properties_ButtonClick(
    object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)

這裏的參數e爲DevExpress.XtraEditors.Controls.ButtonPressedEventArgs類型,該類型中有個字段是Button。

public EditorButton Button { get; }

能夠在事件中根據Caption、Kinder等屬性判斷當前鼠標點擊的是哪一個Button,再執行相應的邏輯。

如在一個包括兩個按鈕(類型分別是Ellipse和Delete),其中Ellipse類型的按鈕用於瀏覽文件,Delete類型的按鈕用於清空選中數據。

一段判斷按鈕類型並執行相應邏輯的代碼以下:

private void buttonEdit1_Properties_ButtonClick(
    object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
{
    if (e.Button.Kind == DevExpress.XtraEditors.Controls.ButtonPredefines.Ellipsis)
    {
        OpenFileDialog openFileDialog = new OpenFileDialog();

        openFileDialog.AutoUpgradeEnabled = true;
        openFileDialog.CheckFileExists = true;
        openFileDialog.CheckPathExists = true;
        openFileDialog.ReadOnlyChecked = false;
        openFileDialog.Multiselect = false;
        openFileDialog.FileName = "";

        openFileDialog.Filter = "全部文件|*.*";
        openFileDialog.Title = "瀏覽";

        if (openFileDialog.ShowDialog() == DialogResult.OK)
        {
            this.buttonEdit1.Text = openFileDialog.FileName;
        }
    }
    else if (e.Button.Kind == DevExpress.XtraEditors.Controls.ButtonPredefines.Delete)
    {
        this.buttonEdit1.Text = "";
    }
}

END

相關文章
相關標籤/搜索