■ PropertyGridControl 클래스의 PopupMenuShowing 이벤트를 사용해 팝업 메뉴 표시시 처리하는 방법을 보여준다.
▶ MainForm.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 |
using System; using System.Data.OleDb; using System.Windows.Forms; using DevExpress.Utils.Menu; using DevExpress.XtraEditors; using DevExpress.XtraEditors.Controls; using DevExpress.XtraVerticalGrid.Events; namespace TestProject { /// <summary> /// 메인 폼 /// </summary> public partial class MainForm : XtraForm { //////////////////////////////////////////////////////////////////////////////////////////////////// Field ////////////////////////////////////////////////////////////////////////////////////////// Private #region Field /// <summary> /// 연결 /// </summary> private OleDbConnection connection; /// <summary> /// 메뉴 항목 /// </summary> private DXMenuItem menuItem; #endregion //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor ////////////////////////////////////////////////////////////////////////////////////////// Public #region 생성자 - MainForm() /// <summary> /// 생성자 /// </summary> public MainForm() { InitializeComponent(); this.connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=nwind.mdb"); #region 룩업 에디터를 설정한다. this.lookUpEdit.Properties.PopupWidth = 320; this.lookUpEdit.Properties.DisplayMember = "ProductID"; #region 제품 ID 컬럼을 추가한다. LookUpColumnInfo productIDColumnInfo = new LookUpColumnInfo(); productIDColumnInfo.Caption = "제품 ID"; productIDColumnInfo.FieldName = "ProductID"; productIDColumnInfo.Width = 100; this.lookUpEdit.Properties.Columns.Add(productIDColumnInfo); #endregion #region 제품명 컬럼을 추가한다. LookUpColumnInfo productNameColumnInfo = new LookUpColumnInfo(); productNameColumnInfo.Caption = "제품명"; productNameColumnInfo.FieldName = "ProductName"; productNameColumnInfo.Width = 200; this.lookUpEdit.Properties.Columns.Add(productNameColumnInfo); this.lookUpEdit.Properties.DataSource = Product.GetProductList(this.connection); #endregion #endregion #region 메뉴 항목을 설정한다. this.menuItem = new DXMenuItem("Test Menu"); #endregion #region 속성 그리드 컨트롤을 설정한다. this.propertyGridControl.OptionsMenu.EnableContextMenu = true; #endregion #region 이벤트를 설정한다. this.lookUpEdit.Properties.EditValueChanged += lookUpEdit_Properties_EditValueChanged; this.propertyGridControl.PopupMenuShowing += propertyGridControl_PopupMenuShowing; this.menuItem.Click += menuItem_Click; #endregion } #endregion //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Private #region 룩업 에디터 속성 편집 값 변경시 처리하기 - lookUpEdit_Properties_EditValueChanged(sender, e) /// <summary> /// 룩업 에디터 속성 편집 값 변경시 처리하기 /// </summary> /// <param name="sender">이벤트 발생자</param> /// <param name="e">이벤트 인자</param> private void lookUpEdit_Properties_EditValueChanged(object sender, EventArgs e) { this.propertyGridControl.SelectedObject = this.lookUpEdit.EditValue as Product; } #endregion #region 속성 그리드 컨트롤 팝업 메뉴 표시시 처리하기 - propertyGridControl_PopupMenuShowing(sender, e) /// <summary> /// 속성 그리드 컨트롤 팝업 메뉴 표시시 처리하기 /// </summary> /// <param name="sender">이벤트 발생자</param> /// <param name="e">이벤트 인자</param> private void propertyGridControl_PopupMenuShowing(object sender, PopupMenuShowingEventArgs e) { e.Menu.Items.Add(this.menuItem); } #endregion #region 메뉴 항목 클릭시 처리하기 - menuItem_Click(sender, e) /// <summary> /// 메뉴 항목 클릭시 처리하기 /// </summary> /// <param name="sender">이벤트 발생자</param> /// <param name="e">이벤트 인자</param> private void menuItem_Click(object sender, EventArgs e) { XtraMessageBox.Show ( this, "Test Menu Clicked...", "INFORMATION", MessageBoxButtons.OK, MessageBoxIcon.Information ); } #endregion } } |