diff --git a/SubtitleEdit.sln.DotSettings b/SubtitleEdit.sln.DotSettings
index ac54a4699..44d4516fb 100644
--- a/SubtitleEdit.sln.DotSettings
+++ b/SubtitleEdit.sln.DotSettings
@@ -24,5 +24,6 @@
True
True
True
+ True
True
True
\ No newline at end of file
diff --git a/src/ui/Controls/NikseComboBox.cs b/src/ui/Controls/NikseComboBox.cs
new file mode 100644
index 000000000..d0af27b3e
--- /dev/null
+++ b/src/ui/Controls/NikseComboBox.cs
@@ -0,0 +1,604 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Drawing.Drawing2D;
+using System.Linq;
+using System.Windows.Forms;
+
+namespace Nikse.SubtitleEdit.Controls
+{
+ [Category("NikseComboBox"), Description("ComboBox with better support for color theme")]
+ public sealed class NikseComboBox : Control
+ {
+ // ReSharper disable once InconsistentNaming
+ public event EventHandler SelectedIndexChanged;
+
+ [Category("NikseComboBox"), Description("Gets or sets DropDownStyle"),
+ RefreshProperties(RefreshProperties.Repaint)]
+ public ComboBoxStyle DropDownStyle { get; set; }
+
+ private bool _sorted;
+ [Category("NikseComboBox"), Description("Gets or sets if elements are auto sorted"), DefaultValue(false)]
+ public bool Sorted
+ {
+ get => _sorted;
+ set
+ {
+ if (_sorted == value)
+ {
+ return;
+ }
+
+ _sorted = value;
+ if (_sorted && _items != null)
+ {
+ _items = _items.OrderBy(p => p.ToString()).ToList();
+ //TODO: fix selected index!
+ }
+ }
+ }
+
+ private List