admin
2020-06-13 5dde755029a86cf8e7052f4878e7c64b94715c38
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
// ***********************************************************************
// Assembly         : HZH_Controls
// Created          : 08-08-2019
//
// ***********************************************************************
// <copyright file="UCHorizontalListItem.cs">
//     Copyright by Huang Zhenghui(黄正辉) All, QQ group:568015492 QQ:623128629 Email:623128629@qq.com
// </copyright>
//
// Blog: https://www.cnblogs.com/bfyx
// GitHub:https://github.com/kwwwvagaa/NetWinformControl
// gitee:https://gitee.com/kwwwvagaa/net_winform_custom_control.git
//
// If you use this code, please keep this note.
// ***********************************************************************
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using HZH_Controls;
 
namespace KS_Controls.Controls
{
    /// <summary>
    /// Class UCHorizontalListItem.
    /// Implements the <see cref="System.Windows.Forms.UserControl" />
    /// </summary>
    /// <seealso cref="System.Windows.Forms.UserControl" />
    [ToolboxItem(false)]
    public partial class KSHorizontalListItem : UserControl
    {
        /// <summary>
        /// Occurs when [selected item].
        /// </summary>
        public event EventHandler SelectedItem;
        /// <summary>
        /// The data source
        /// </summary>
        private KeyValuePair<string, string> _DataSource = new KeyValuePair<string, string>();
        /// <summary>
        /// Gets or sets the data source.
        /// </summary>
        /// <value>The data source.</value>
        public KeyValuePair<string, string> DataSource
        {
            get { return _DataSource; }
            set
            {
                _DataSource = value;
                var g = lblTitle.CreateGraphics();
                int intWidth = ControlHelper.GetStringWidth(value.Value, g, lblTitle.Font);
 
                g.Dispose();
                //if (intWidth < 50)
                //    intWidth = 50;
                this.Width = intWidth + 8;
                lblTitle.Text = value.Value;
                SetSelect(false);
            }
        }
 
        private Color selectedColor = Color.FromArgb(255, 77, 59);
 
        public Color SelectedColor
        {
            get { return selectedColor; }
            set { selectedColor = value; }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="UCHorizontalListItem" /> class.
        /// </summary>
        public KSHorizontalListItem()
        {
            InitializeComponent();
            this.Dock = DockStyle.Right;
            this.MouseDown += Item_MouseDown;
            this.lblTitle.MouseDown += Item_MouseDown;
        }
 
        /// <summary>
        /// Handles the MouseDown event of the Item control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="MouseEventArgs" /> instance containing the event data.</param>
        void Item_MouseDown(object sender, MouseEventArgs e)
        {
            if (SelectedItem != null)
                SelectedItem(this, e);
        }
 
        /// <summary>
        /// Sets the select.
        /// </summary>
        /// <param name="bln">if set to <c>true</c> [BLN].</param>
        public void SetSelect(bool bln)
        {
            if (bln)
            {
                lblTitle.ForeColor = selectedColor;
                this.lblTitle.Padding = new Padding(0, 0, 0, 0);
            }
            else
            {
                lblTitle.ForeColor = Color.FromArgb(64, 64, 64);
                this.lblTitle.Padding = new Padding(0, 0, 0, 0);
            }
        }
    }
}