本人也是在昨天2022年4月6日第一次接觸DEV控件,我的師傅就給我拍下一個任務。內容如下:
1、新建.netframwork4.7桌面程序工程
2、在窗體中創建DEV的GridControl
3、設計類員工,擁有屬性 員工ID 姓名 年齡 性別 所屬部門 (員工ID為隨機的Guid,其他屬性類型自定)
4、界面添加按鈕,增加。編寫按鈕邏輯,點擊后在緩存中添加員工對象
5、將添加的對象緩存顯示在GridControl中
6、實現在GridControl對緩存中員工屬性的直接修改
7、界面添加按鈕,刪除。編寫按鈕邏輯,對GridControl中所選中的對象執行從緩存中刪除的功能
額外:(參考已有代碼編寫)
1、在關閉界面時,將緩存中的員工對象保存至本地。
2、在打開界面時,讀取本地的員工信息到緩存中,並在界面顯示。
於是乎 我便做了如下的編寫。先上截圖:
功能很簡單,但是我還是有一些沒搞懂,純屬自己摸索的。
1. 首先得有DEV控件 ,是吧哈哈哈。。。。感覺自己是個智障。
2.附上代碼,
using DevExpress.XtraEditors; using DevExpress.XtraEditors.Repository; using DevExpress.XtraGrid; using DevExpress.XtraGrid.Views.Grid; using System; using System.ComponentModel; using System.Data; using System.Runtime.CompilerServices; using System.Windows.Forms; namespace EmployTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); //gridView1標題 gridView1.GroupPanelText = "員工管理:"; //gridView1頂部顯示添加行 gridView1.OptionsView.NewItemRowPosition = NewItemRowPosition.Top; //gridView1允許編輯 gridView1.OptionsBehavior.Editable = true; #region gridView1選中行后按快捷鍵 “Del” 刪除 //gridControl1.ProcessGridKey += (s, e) => //{ // if (e.KeyCode == Keys.Delete ) // { // if (XtraMessageBox.Show("是否刪除選中行?", "刪除行對話框", MessageBoxButtons.YesNo) != // DialogResult.Yes) // return; // GridControl grid = s as GridControl; // GridView view = grid.FocusedView as GridView; // view.DeleteSelectedRows(); // } //}; #endregion } /// <summary> /// 字段屬性設置並驗證字段屬性數據的正確性,屬性變更后向客戶端發出屬性值已更改的通知。 /// </summary> public class Record : INotifyPropertyChanged { int id; [DisplayName("序號")] public int ID { get { return id; } set { if (id != value) { id = value; OnPropertyChanged(); } } } string text; [DisplayName("姓名")] public string Name { get { return text; } set { if (text != value) { if (string.IsNullOrEmpty(value)) throw new Exception(); text = value; OnPropertyChanged(); } } } string age; [DisplayName("年齡")] public string Age { get { return age; } set { if (age != value) { if (string.IsNullOrEmpty(value)) throw new Exception(); age = value; OnPropertyChanged(); } } } string dt; [DisplayName("性別")] public string Gender { get { return dt; } set { if (dt != value) { dt = value; OnPropertyChanged(); } } } string dt1; [DisplayName("部門")] public string Bumen { get { return dt1; } set { if (dt1 != value) { dt1 = value; OnPropertyChanged(); } } } /// <summary> /// 通知界面屬性 /// </summary> public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged([CallerMemberName] string propertyName = "") { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } /// <summary> /// 生成隨機字段數據 /// </summary> public class DataHelper { public static string[] names = new string[] { "小張", "小王", "小希", "小錢", "小馬", "小磊", "小紅" ,"小明"}; public static string[] gender = new string[] { "男", "女" }; public static string[] bumen = new string[] { "軟件", "電氣" }; public static BindingList<Record> GetData(int count) { BindingList<Record> records = new BindingList<Record>(); Random rnd = new Random(); for (int i = 0; i < count; i++) { int n = rnd.Next(); records.Add(new Record() { ID = i + 0, Name = names[i % names.Length], Gender = gender[i % gender.Length], Age = Convert.ToString(rnd.Next(1, 50)), Bumen = bumen[i % bumen.Length], }); }; return records; } } private void Form1_Load(object sender, EventArgs e) { //dataGrid自動在數據源中找到公共字段並創建列。 gridControl1.DataSource = DataHelper.GetData(20); //創建一個ComboBox編輯器,在“姓名”列中顯示可用的姓名。 RepositoryItemComboBox riComboBox = new RepositoryItemComboBox(); riComboBox.Items.AddRange(DataHelper.names); gridControl1.RepositoryItems.Add(riComboBox); gridView1.Columns["Name"].ColumnEdit = riComboBox; //創建一個ComboBox編輯器,在“性別”列中顯示可用的性別。 RepositoryItemComboBox riComboBox1 = new RepositoryItemComboBox(); riComboBox1.Items.AddRange(DataHelper.gender); gridControl1.RepositoryItems.Add(riComboBox1); gridView1.Columns["Gender"].ColumnEdit = riComboBox1; //創建一個ComboBox編輯器,在“部門”列中顯示可用的部門。 RepositoryItemComboBox riComboBox2 = new RepositoryItemComboBox(); riComboBox2.Items.AddRange(DataHelper.bumen); gridControl1.RepositoryItems.Add(riComboBox2); gridView1.Columns["Bumen"].ColumnEdit = riComboBox2; } /// <summary> /// 導出excel /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Btn_Output_Click_1(object sender, EventArgs e) { SaveFileDialog fileDialog = new SaveFileDialog(); fileDialog.Title = "導出Excel"; fileDialog.Filter = "Excel文件(*.xls)|*.xls"; DialogResult dialogResult = fileDialog.ShowDialog(this); if (dialogResult == DialogResult.OK) { DevExpress.XtraPrinting.XlsExportOptions options = new DevExpress.XtraPrinting.XlsExportOptions(); gridControl1.ExportToXls(fileDialog.FileName); DevExpress.XtraEditors.XtraMessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } /// <summary> /// 增加行 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void AddRow_Click(object sender, EventArgs e) { gridView1.AddNewRow(); } /// <summary> /// 刪除行 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void DelRow_Click(object sender, EventArgs e) { if (XtraMessageBox.Show("請確定是否刪除當前記錄?", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) { GridControl grid = new GridControl(); GridView view = grid.FocusedView as GridView; gridView1.DeleteSelectedRows(); } } } }
注意點: 保姆級別的教程。
選中行設置。
3. 至此,所有的代碼就在這里了,寫了兩種刪除的方法。
代碼下載地址:點我 提取碼: 8ug9
還有很多不足,請各位大佬手下留情。