From d36a2583926b2315e089285e4e2661f8742ed32a Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sun, 17 Jul 2022 20:47:17 +0200 Subject: [PATCH] Fixed listview to look & behave like a listbox, but with icons --- .../Components/TextElements.Designer.cs | 12 ++++++-- .../UI WinForms/Components/TextElements.cs | 28 ++++++++++++------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/I18N Commander/UI WinForms/Components/TextElements.Designer.cs b/I18N Commander/UI WinForms/Components/TextElements.Designer.cs index 6313a59..316636e 100644 --- a/I18N Commander/UI WinForms/Components/TextElements.Designer.cs +++ b/I18N Commander/UI WinForms/Components/TextElements.Designer.cs @@ -38,6 +38,7 @@ this.labelFilter = new System.Windows.Forms.Label(); this.labelSectionPath = new System.Windows.Forms.Label(); this.listTextElements = new System.Windows.Forms.ListView(); + this.column = new System.Windows.Forms.ColumnHeader(); this.toolTip = new System.Windows.Forms.ToolTip(this.components); this.tableLayout.SuspendLayout(); this.flowLayoutToolbar.SuspendLayout(); @@ -155,19 +156,23 @@ // // listTextElements // + this.listTextElements.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.column}); this.tableLayout.SetColumnSpan(this.listTextElements, 2); this.listTextElements.Dock = System.Windows.Forms.DockStyle.Fill; this.listTextElements.FullRowSelect = true; - this.listTextElements.GridLines = true; this.listTextElements.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None; this.listTextElements.Location = new System.Drawing.Point(69, 43); this.listTextElements.MultiSelect = false; this.listTextElements.Name = "listTextElements"; - this.listTextElements.ShowGroups = false; this.listTextElements.Size = new System.Drawing.Size(634, 115); this.listTextElements.TabIndex = 5; this.listTextElements.UseCompatibleStateImageBehavior = false; - this.listTextElements.View = System.Windows.Forms.View.List; + this.listTextElements.View = System.Windows.Forms.View.Details; + // + // column + // + this.column.Width = 194; // // toolTip // @@ -204,5 +209,6 @@ private Label labelFilter; private Label labelSectionPath; private ListView listTextElements; + private ColumnHeader column; } } diff --git a/I18N Commander/UI WinForms/Components/TextElements.cs b/I18N Commander/UI WinForms/Components/TextElements.cs index 081fb1f..649aded 100644 --- a/I18N Commander/UI WinForms/Components/TextElements.cs +++ b/I18N Commander/UI WinForms/Components/TextElements.cs @@ -1,6 +1,7 @@ using DataModel.Database; using Processor; using UI_WinForms.Dialogs; +using UI_WinForms.Resources; namespace UI_WinForms.Components; @@ -16,6 +17,15 @@ public partial class TextElements : UserControl if(Program.SERVICE_PROVIDER is null) return; + // Create an image list from a resource: + var imgList = new ImageList(); + imgList.ImageSize = new Size(45, 45); + imgList.ColorDepth = ColorDepth.Depth32Bit; + imgList.Images.Add(Icons.icons8_align_text_left_512); + + // Set the image list to the list box: + this.listTextElements.SmallImageList = imgList; + // When the section is changed, update this component: AppEvents.WhenSectionChanged += async (sender, section) => { @@ -43,14 +53,12 @@ public partial class TextElements : UserControl // Update the list: this.listTextElements.Items.Clear(); foreach (var textElement in textElements) - { - var item = new ListViewItem(textElement.Name) + this.listTextElements.Items.Add(new ListViewItem(textElement.Name, 0) { Tag = textElement.Code, - }; - - this.listTextElements.Items.Add(item); - } + }); + + this.column.AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); } private async void buttonAdd_Click(object sender, EventArgs e) @@ -76,12 +84,12 @@ public partial class TextElements : UserControl return; // Add the text element to the list: - var item = new ListViewItem(newTextElement.Result!.Name) + this.listTextElements.Items.Add(new ListViewItem(newTextElement.Result!.Name, 0) { Tag = newTextElement.Result.Code, - }; - - this.listTextElements.Items.Add(item); + }); + + this.column.AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); } private void buttonRemove_Click(object sender, EventArgs e)