2012-12-29 38 views
1

我有這樣的用戶控件列表框的:我如何添加一些屬性到UserControl?

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; 

namespace Lightnings_Extractor 
{ 
    public partial class ListBoxControl : UserControl 
    { 

     private List<int> m_itemIndexes = new List<int>(); 

     public ListBoxControl() 
     { 
      InitializeComponent(); 

      this.listBox1.SelectedIndex = 0; 
     } 

     private void listBox1_MouseDown(object sender, MouseEventArgs e) 
     { 
      int index = listBox1.IndexFromPoint(e.X, e.Y); 
      listBox1.SelectedIndex = index; 

      if (e.Button == System.Windows.Forms.MouseButtons.Right) 
      { 
       if (m_itemIndexes.Contains(index)) 
        return; 

       m_itemIndexes.Add(index); 
       DrawItem(index); 
      } 
      else if (e.Button == MouseButtons.Left) 
      { 
       if (!m_itemIndexes.Contains(index)) 
        return; 

       m_itemIndexes.Remove(index); 
       DrawItem(index); 
      } 
     } 

     private void listBox1_DrawItem(object sender, DrawItemEventArgs e) 
     { 
      bool coloring = m_itemIndexes.Contains(e.Index); 
      bool selected = (e.State & DrawItemState.Selected) == DrawItemState.Selected; 

      if (coloring) 
      { 
       using (var brush = new SolidBrush(Color.Red)) 
       { 
        e.Graphics.FillRectangle(brush, e.Bounds); 
       } 
      } 
      else 
      { 
       e.DrawBackground(); 
      } 

      string item = listBox1.Items[e.Index].ToString(); 
      e.Graphics.DrawString(item, e.Font, selected || coloring ? Brushes.White : Brushes.Black, e.Bounds, StringFormat.GenericDefault); 

      if (selected) 
       e.DrawFocusRectangle(); 
     } 

     private void DrawItem(int index) 
     { 
      Rectangle rectItem = listBox1.GetItemRectangle(index); 
      listBox1.Invalidate(rectItem); 
     } 
    } 
} 

例如這條線:

using (var brush = new SolidBrush(Color.Red)) 

現在它設置爲紅色。但我希望用戶能夠將其更改爲任何代碼或其他形式或類別中的任何位置的顏色。不僅在這個UserControl代碼中。

我如何添加這樣的屬性?

回答

1

只是聲明屬性,你通常會:

​​

一旦您設置屬性爲新的值,它會調用刷新(),它重繪的控制,包括你的畫筆。

0

只需添加一個新的屬性。

public Brush Fill {get;set;} 
相關問題