Exemple #1
0
        public static CustomListView GenerateCustomListView(Control parent, string[] columnNames,
                                                            bool gridLines = false, bool multiselect = false)
        {
            var lvw = new CustomListView
            {
                Parent        = parent,
                Dock          = DockStyle.Fill,
                View          = View.Details,
                GridLines     = gridLines,
                FullRowSelect = true,
                MultiSelect   = multiselect
            };

            for (int i = 0; i < columnNames.Length; i++)
            {
                var key  = i.ToString();
                var text = columnNames[i];
                lvw.Columns.Add(key, text);
            }
            lvw.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
            return(lvw);
        }
        partial void InitializeMainWindow()
        {
            ClientSize    = new Size(640, 480);
            Text          = "WSL Manager";
            StartPosition = FormStartPosition.WindowsDefaultBounds;

            Load += MainForm_Load;

            layout = new ToolStripContainer()
            {
                Parent = this,
                Dock   = DockStyle.Fill,
            };

            listView = new CustomListView()
            {
                Parent                  = layout.ContentPanel,
                Dock                    = DockStyle.Fill,
                View                    = View.Details,
                MultiSelect             = false,
                Sorting                 = SortOrder.None,
                FullRowSelect           = true,
                LargeImageList          = largeImageList,
                SmallImageList          = smallImageList,
                BaseSmallImageList      = smallImageList,
                StateImageList          = stateImageList,
                DataSource              = bindingSource,
                EnableAutoScaleColumn   = true,
                ColumnScaleList         = new Collection <float>(new float[] { 3f, 1f, 1f, 1f, }),
                UseExplorerTheme        = true,
                UseTranslucentHotItem   = true,
                UseTranslucentSelection = true,
                ShowHeaderInAllViews    = false,
                ShowGroups              = false,
            };

            listView.PrimarySortColumn = listView.AllColumns.Find(x => string.Equals(
                                                                      x.Name, nameof(WslDistro.DistroName), StringComparison.Ordinal));

            listView.PrimarySortOrder = SortOrder.Ascending;

            listView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);

            var defaultDistroColumn = listView.AllColumns.Find(x => string.Equals(
                                                                   x.Name, nameof(WslDistro.IsDefault), StringComparison.Ordinal));

            if (defaultDistroColumn != null)
            {
                defaultDistroColumn.IsEditable = false;
            }

            var distroNameColumn = listView.AllColumns.Find(x => string.Equals(
                                                                x.Name, nameof(WslDistro.DistroName), StringComparison.Ordinal));

            if (distroNameColumn != null)
            {
                distroNameColumn.ImageGetter = new ImageGetterDelegate(o =>
                {
                    var modelName = ((o as WslDistro)?.DistroName ?? string.Empty).Trim();
                    var keyList   = Resources.LogoImages.Keys.ToArray();
                    return(keyList.FirstOrDefault(x => modelName.Contains(x, StringComparison.OrdinalIgnoreCase)) ?? string.Empty);
                });
            }

            listView.KeyUp        += ListView_KeyUp;
            listView.MouseDown    += ListView_MouseDown;
            listView.ItemActivate += ListView_ItemActivate;
            listView.FormatRow    += ListView_FormatRow;

            statusStrip = new StatusStrip()
            {
                Parent = layout.BottomToolStripPanel,
                Dock   = DockStyle.Fill,
            };

            statusItem = new ToolStripStatusLabel()
            {
                Spring    = true,
                Text      = "Ready",
                TextAlign = ContentAlignment.MiddleLeft,
            };

            statusStrip.Items.Add(statusItem);
        }