mirror of
https://github.com/colhountech/DarkUI.Net5.git
synced 2025-07-02 07:09:27 +03:00
Created DarkComboBox
This commit is contained in:
parent
11891a3144
commit
d6c7da9a92
162
DarkUI/Controls/DarkComboBox.cs
Normal file
162
DarkUI/Controls/DarkComboBox.cs
Normal file
@ -0,0 +1,162 @@
|
||||
using DarkUI.Config;
|
||||
using DarkUI.Icons;
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
using DarkUI.Extensions;
|
||||
|
||||
namespace DarkUI.Controls
|
||||
{
|
||||
public class DarkComboBox : ComboBox
|
||||
{
|
||||
public DarkComboBox() : base()
|
||||
{
|
||||
SetStyle(ControlStyles.OptimizedDoubleBuffer |
|
||||
ControlStyles.ResizeRedraw |
|
||||
ControlStyles.UserPaint, true);
|
||||
|
||||
DrawMode = DrawMode.OwnerDrawVariable;
|
||||
|
||||
base.FlatStyle = FlatStyle.Flat;
|
||||
base.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||
}
|
||||
|
||||
[Browsable(false)]
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
||||
public new Color ForeColor { get; set; }
|
||||
|
||||
[Browsable(false)]
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
||||
public new Color BackColor { get; set; }
|
||||
|
||||
[Browsable(false)]
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
||||
public new FlatStyle FlatStyle { get; set; }
|
||||
|
||||
[Browsable(false)]
|
||||
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
||||
public new ComboBoxStyle DropDownStyle { get; set; }
|
||||
|
||||
public new void Invalidate()
|
||||
{
|
||||
base.Invalidate();
|
||||
}
|
||||
|
||||
protected override void OnTextChanged(EventArgs e)
|
||||
{
|
||||
Invalidate();
|
||||
|
||||
base.OnTextChanged(e);
|
||||
}
|
||||
|
||||
protected override void OnTextUpdate(EventArgs e)
|
||||
{
|
||||
Invalidate();
|
||||
|
||||
base.OnTextUpdate(e);
|
||||
}
|
||||
|
||||
protected override void OnSelectedValueChanged(EventArgs e)
|
||||
{
|
||||
Invalidate();
|
||||
|
||||
base.OnSelectedValueChanged(e);
|
||||
}
|
||||
|
||||
protected override void OnDrawItem(DrawItemEventArgs e)
|
||||
{
|
||||
var g = e.Graphics;
|
||||
var rect = e.Bounds;
|
||||
|
||||
var textColor = Colors.LightText;
|
||||
var fillColor = Colors.LightBackground;
|
||||
|
||||
if ((e.State & DrawItemState.Selected) == DrawItemState.Selected ||
|
||||
(e.State & DrawItemState.Focus) == DrawItemState.Focus ||
|
||||
(e.State & DrawItemState.NoFocusRect) != DrawItemState.NoFocusRect)
|
||||
fillColor = Colors.BlueSelection;
|
||||
|
||||
using (var b = new SolidBrush(fillColor))
|
||||
{
|
||||
g.FillRectangle(b, rect);
|
||||
}
|
||||
|
||||
if (e.Index >= 0 && e.Index < Items.Count)
|
||||
{
|
||||
var text = Items[e.Index].ToString();
|
||||
|
||||
using (var b = new SolidBrush(textColor))
|
||||
{
|
||||
var textOffsetX = 2;
|
||||
var textOffsetY = 2;
|
||||
|
||||
var modRect = new Rectangle(rect.Left + textOffsetX,
|
||||
rect.Top + textOffsetY,
|
||||
rect.Width - textOffsetX,
|
||||
rect.Height - textOffsetY);
|
||||
|
||||
var stringFormat = new StringFormat
|
||||
{
|
||||
LineAlignment = StringAlignment.Center,
|
||||
Alignment = StringAlignment.Near,
|
||||
Trimming = StringTrimming.EllipsisCharacter
|
||||
};
|
||||
|
||||
g.DrawString(text, Font, b, modRect, stringFormat);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnPaint(PaintEventArgs e)
|
||||
{
|
||||
var g = e.Graphics;
|
||||
var rect = new Rectangle(0, 0, ClientSize.Width, ClientSize.Height);
|
||||
|
||||
var textColor = Colors.LightText;
|
||||
var borderColor = Colors.GreySelection;
|
||||
var fillColor = Colors.LightBackground;
|
||||
|
||||
if (Focused && TabStop)
|
||||
borderColor = Colors.BlueHighlight;
|
||||
|
||||
using (var b = new SolidBrush(fillColor))
|
||||
{
|
||||
g.FillRectangle(b, rect);
|
||||
}
|
||||
|
||||
using (var p = new Pen(borderColor, 1))
|
||||
{
|
||||
var modRect = new Rectangle(rect.Left, rect.Top, rect.Width - 1, rect.Height - 1);
|
||||
g.DrawRectangle(p, modRect);
|
||||
}
|
||||
|
||||
var icon = ScrollIcons.scrollbar_arrow_hot;
|
||||
g.DrawImageUnscaled(icon,
|
||||
rect.Right - icon.Width - (Consts.Padding / 2),
|
||||
(rect.Height / 2) - (icon.Height / 2));
|
||||
|
||||
var text = SelectedItem != null ? SelectedItem.ToString() : Text;
|
||||
|
||||
using (var b = new SolidBrush(textColor))
|
||||
{
|
||||
var textOffsetX = 2;
|
||||
var textOffsetY = 2;
|
||||
|
||||
var modRect = new Rectangle(rect.Left + textOffsetX,
|
||||
rect.Top + textOffsetY,
|
||||
rect.Width - textOffsetX,
|
||||
rect.Height - textOffsetY);
|
||||
|
||||
var stringFormat = new StringFormat
|
||||
{
|
||||
LineAlignment = StringAlignment.Center,
|
||||
Alignment = StringAlignment.Near,
|
||||
Trimming = StringTrimming.EllipsisCharacter
|
||||
};
|
||||
|
||||
g.DrawString(text, Font, b, modRect, stringFormat);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -50,6 +50,9 @@
|
||||
<Compile Include="Controls\DarkCheckBox.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\DarkComboBox.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Controls\DarkContentAlignment.cs" />
|
||||
<Compile Include="Controls\DarkControlState.cs" />
|
||||
<Compile Include="Controls\DarkRadioButton.cs">
|
||||
|
48
Example/Forms/Dialogs/DialogControls.Designer.cs
generated
48
Example/Forms/Dialogs/DialogControls.Designer.cs
generated
@ -39,6 +39,9 @@ namespace Example
|
||||
this.lstTest = new DarkUI.Controls.DarkListView();
|
||||
this.pnlMessageBox = new DarkUI.Controls.DarkSectionPanel();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.panel6 = new System.Windows.Forms.Panel();
|
||||
this.darkComboBox1 = new DarkUI.Controls.DarkComboBox();
|
||||
this.darkTitle4 = new DarkUI.Controls.DarkTitle();
|
||||
this.panel5 = new System.Windows.Forms.Panel();
|
||||
this.darkRadioButton3 = new DarkUI.Controls.DarkRadioButton();
|
||||
this.darkRadioButton2 = new DarkUI.Controls.DarkRadioButton();
|
||||
@ -59,6 +62,7 @@ namespace Example
|
||||
this.pnlListView.SuspendLayout();
|
||||
this.pnlMessageBox.SuspendLayout();
|
||||
this.panel1.SuspendLayout();
|
||||
this.panel6.SuspendLayout();
|
||||
this.panel5.SuspendLayout();
|
||||
this.panel4.SuspendLayout();
|
||||
this.panel3.SuspendLayout();
|
||||
@ -150,6 +154,7 @@ namespace Example
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Controls.Add(this.panel6);
|
||||
this.panel1.Controls.Add(this.panel5);
|
||||
this.panel1.Controls.Add(this.panel4);
|
||||
this.panel1.Controls.Add(this.panel3);
|
||||
@ -161,6 +166,45 @@ namespace Example
|
||||
this.panel1.Size = new System.Drawing.Size(220, 374);
|
||||
this.panel1.TabIndex = 0;
|
||||
//
|
||||
// panel6
|
||||
//
|
||||
this.panel6.Controls.Add(this.darkComboBox1);
|
||||
this.panel6.Controls.Add(this.darkTitle4);
|
||||
this.panel6.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.panel6.Location = new System.Drawing.Point(10, 285);
|
||||
this.panel6.Name = "panel6";
|
||||
this.panel6.Size = new System.Drawing.Size(200, 100);
|
||||
this.panel6.TabIndex = 13;
|
||||
//
|
||||
// darkComboBox1
|
||||
//
|
||||
this.darkComboBox1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(49)))), ((int)(((byte)(51)))), ((int)(((byte)(53)))));
|
||||
this.darkComboBox1.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.darkComboBox1.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
|
||||
this.darkComboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.darkComboBox1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.darkComboBox1.ForeColor = System.Drawing.Color.Gainsboro;
|
||||
this.darkComboBox1.FormattingEnabled = true;
|
||||
this.darkComboBox1.Items.AddRange(new object[] {
|
||||
"Item 1",
|
||||
"Item 2",
|
||||
"Item 3",
|
||||
"Item 4"});
|
||||
this.darkComboBox1.Location = new System.Drawing.Point(0, 26);
|
||||
this.darkComboBox1.Name = "darkComboBox1";
|
||||
this.darkComboBox1.Size = new System.Drawing.Size(200, 24);
|
||||
this.darkComboBox1.TabIndex = 17;
|
||||
this.darkComboBox1.Text = "Item 1";
|
||||
//
|
||||
// darkTitle4
|
||||
//
|
||||
this.darkTitle4.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
this.darkTitle4.Location = new System.Drawing.Point(0, 0);
|
||||
this.darkTitle4.Name = "darkTitle4";
|
||||
this.darkTitle4.Size = new System.Drawing.Size(200, 26);
|
||||
this.darkTitle4.TabIndex = 16;
|
||||
this.darkTitle4.Text = "Additional controls";
|
||||
//
|
||||
// panel5
|
||||
//
|
||||
this.panel5.Controls.Add(this.darkRadioButton3);
|
||||
@ -331,6 +375,7 @@ namespace Example
|
||||
this.pnlMessageBox.ResumeLayout(false);
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel1.PerformLayout();
|
||||
this.panel6.ResumeLayout(false);
|
||||
this.panel5.ResumeLayout(false);
|
||||
this.panel5.PerformLayout();
|
||||
this.panel4.ResumeLayout(false);
|
||||
@ -365,5 +410,8 @@ namespace Example
|
||||
private DarkTitle darkTitle1;
|
||||
private DarkTitle darkTitle2;
|
||||
private DarkTitle darkTitle3;
|
||||
private System.Windows.Forms.Panel panel6;
|
||||
private DarkTitle darkTitle4;
|
||||
private DarkComboBox darkComboBox1;
|
||||
}
|
||||
}
|
@ -118,6 +118,13 @@
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="darkComboBox1.ButtonIcon" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFCAYAAACXU8ZrAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1
|
||||
MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAvSURBVBhXY4iJiflPCDP8//8f
|
||||
r0KQPFgRLoUwObgiEMamAIRRFIEwuoL///8zAAC5cW+geGnZqAAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAECAAAAEAIAA8AQAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAQAAAAEAgGAAAAH/P/YQAAAAFz
|
||||
|
Loading…
x
Reference in New Issue
Block a user