|
일일 결과물 |
조 : 2조 |
조장 : 김윤환 | |
조원 : 박노진, 블라디미르, 신배호, 미스토시 | |
주제 : Windows Forms User Control | |
작성일 : 20101109 |
작성자 : 블라디미르 |
Today I went in to Windows Forms UserControl class as I have never done before and found out a lot more about it. I have found out that the UserControl give us the ability to create controls that can be used in multiple places within an application or organization and that we can include all the code needed for validation of common data we might ask the user to input. One of the things that really called my attention is the fact that it can be compiled in to a DLL and that the DLL can be referenced and distributed with the application or all applications within an organization. This gives us the ability to reference the user control in many applications and save time laying out and coding the contained elements of the user control. For a better understanding of what I have been discerning above I invite you to take a close look in the code bellow.
The User Controller
My controller item
class MControlItem: IComparable { public int Dist { get; private set; }
public Color Color { get; private set; }
public MControlItem(int dist, Color color) { Dist = dist; Color = color; }
#region IComparable member
public int CompareTo(object obj) { MControlItem other = obj as MControlItem; if (other == null) { throw new ApplicationException("this is not MControlItem's object."); } return Dist - other.Dist; } #endregion } |
My control
public partial class MControl : UserControl { public delegate void StopDele(); public delegate void ChangeColorDele(Color color); public event StopDele StopEventHandler; public event ChangeColorDele ChangeColorEventHandler;
List<MControlItem> list = new List<MControlItem>(); Timer timer = null;
public Color InitColor { get; set; }
public int Max { get { return trackBar1.Maximum; } set { trackBar1.Maximum = value; } }
public MControl() { InitializeComponent(); InitColor = Color.White; splitContainer1.Panel1.BackColor = InitColor; trackBar1.Minimum = 0; timer = new Timer(); timer.Interval = 100; timer.Tick +=new EventHandler(timer_Tick); }
void timer_Tick(object sender, EventArgs e) { trackBar1.Value++; if (trackBar1.Value == trackBar1.Maximum) { timer.Stop(); trackBar1.Value = 0; splitContainer1.Panel1.BackColor = InitColor; OnStop(); } SetColor(); }
private void OnStop() { if (StopEventHandler != null) { StopEventHandler(); } }
private void trackBar1_Scroll(object sender, EventArgs e) { SetColor(); }
private void SetColor() { splitContainer1.Panel1.BackColor = InitColor; Color color = splitContainer1.Panel1.BackColor; foreach (MControlItem mItem in list) { if (trackBar1.Value >= mItem.Dist) { color = mItem.Color; } else { break; } } splitContainer1.Panel1.BackColor = color; [안내]태그제한으로등록되지않습니다-xxOnChangeColor(color); }
private void [안내]태그제한으로등록되지않습니다-xxOnChangeColor(Color color) { if (ChangeColorEventHandler != null) { ChangeColorEventHandler(color); } }
public void AddItem(int dist, Color color) { list.Add(new MControlItem(dist, color)); list.Sort(); }
public void Start() { timer.Start(); } } |
The Using of User Control
UsingUserControl
public partial class Form1 : Form { const int maxdist = 100; public Form1() { InitializeComponent(); InitDistComboBox(); InitColorComboBox(); mControl1.Max = maxdist; mControl1.ChangeColorEventHandler += new MControl.MControl.ChangeColorDele(mControl1_ChangeColorEventHandler); mControl1.StopEventHandler += new MControl.MControl.StopDele(mControl1_StopEventHandler); }
private void InitDistComboBox() { for (int i = 0; i < maxdist; i++) { comboBoxOfDistance.Items.Add(i); } }
private void InitColorComboBox() { comboBoxOfColor.Items.Add(Color.Blue); comboBoxOfColor.Items.Add(Color.Black); comboBoxOfColor.Items.Add(Color.White); comboBoxOfColor.Items.Add(Color.Red); comboBoxOfColor.Items.Add(Color.Green); comboBoxOfColor.Items.Add(Color.Yellow); comboBoxOfColor.Items.Add(Color.Brown); comboBoxOfColor.Items.Add(Color.Orange); }
void mControl1_ChangeColorEventHandler(Color color) { labelOfActColor.Text = color.ToString(); }
void mControl1_StopEventHandler() { buttonOfStart.Enabled = true; }
private void buttonOfAddItem_Click(object sender, EventArgs e) { if ((comboBoxOfColor.SelectedItem != null) && (comboBoxOfDistance.SelectedItem != null)) { Color color = (Color)comboBoxOfColor.SelectedItem; int dist = (int)comboBoxOfDistance.SelectedItem; mControl1.AddItem(dist, color); } comboBoxOfColor.SelectedItem = null; comboBoxOfDistance.SelectedItem = null; }
private void buttonOfStart_Click(object sender, EventArgs e) { buttonOfStart.Enabled = false; mControl1.Start(); }
} |