当前位置: 首页>>代码示例>>C#>>正文


C# MeasureItemEventArgs.ItemWidth属性代码示例

本文整理汇总了C#中System.Windows.Forms.MeasureItemEventArgs.ItemWidth属性的典型用法代码示例。如果您正苦于以下问题:C# MeasureItemEventArgs.ItemWidth属性的具体用法?C# MeasureItemEventArgs.ItemWidth怎么用?C# MeasureItemEventArgs.ItemWidth使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在System.Windows.Forms.MeasureItemEventArgs的用法示例。


在下文中一共展示了MeasureItemEventArgs.ItemWidth属性的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Dispose

public class Form1 : System.Windows.Forms.Form
{
   private System.Windows.Forms.ListBox listBox1;
   private System.ComponentModel.Container components = null;

   protected override void Dispose(bool disposing)
   {
      if( disposing )
      {
         if ( components != null ) 
            components.Dispose();

         if ( foreColorBrush != null )
            foreColorBrush.Dispose();
      }
      base.Dispose(disposing);
   }

     #region Windows Form Designer generated code
   /// <summary>
   /// Required method for Designer support - do not modify
   /// the contents of this method with the code editor.
   /// </summary>
   private void InitializeComponent()
   {
      this.listBox1 = new System.Windows.Forms.ListBox();
      this.SuspendLayout();
      // 
      // listBox1
      // 
      this.listBox1.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
      this.listBox1.Location = new System.Drawing.Point(16, 48);
      this.listBox1.Name = "listBox1";
      this.listBox1.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
      this.listBox1.Size = new System.Drawing.Size(256, 134);
      this.listBox1.TabIndex = 0;
      this.listBox1.MeasureItem += new System.Windows.Forms.MeasureItemEventHandler(this.listBox1_MeasureItem);
      this.listBox1.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.listBox1_DrawItem);
      // 
      // Form1
      // 
      this.ClientSize = new System.Drawing.Size(292, 273);
      this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                   this.listBox1});
      this.Name = "Form1";
      this.Text = "Form1";
      this.ResumeLayout(false);
   }
     #endregion

   [STAThread]
   static void Main() 
   {
      Application.Run(new Form1());
   }

   private void listBox1_MeasureItem(object sender, System.Windows.Forms.MeasureItemEventArgs e)
   {
      Font font = ((ListBoxFontItem)listBox1.Items[e.Index]).Font;
      SizeF stringSize = e.Graphics.MeasureString(font.Name, font);

      // Set the height and width of the item
      e.ItemHeight = (int)stringSize.Height;
      e.ItemWidth = (int)stringSize.Width;
   }

   // For efficiency, cache the brush to use for drawing.
   private SolidBrush foreColorBrush;

   private void listBox1_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
   {
      Brush brush;

      // Create the brush using the ForeColor specified by the DrawItemEventArgs
      if ( foreColorBrush == null )
         {
             foreColorBrush = new SolidBrush(e.ForeColor);
         }
         else if ( foreColorBrush.Color != e.ForeColor )
      {
         // The control's ForeColor has changed, so dispose of the cached brush and
         // create a new one.
         foreColorBrush.Dispose();
         foreColorBrush = new SolidBrush(e.ForeColor);
      }

      // Select the appropriate brush depending on if the item is selected.
      // Since State can be a combinateion (bit-flag) of enum values, you can't use
      // "==" to compare them.
      if ( (e.State & DrawItemState.Selected) == DrawItemState.Selected )
         brush = SystemBrushes.HighlightText;
      else
         brush = foreColorBrush;

      // Perform the painting.
      Font font = ((ListBoxFontItem)listBox1.Items[e.Index]).Font;
      e.DrawBackground();
      e.Graphics.DrawString(font.Name, font, brush, e.Bounds);
      e.DrawFocusRectangle();
   }

   /// <summary>
   ///  A wrapper class for use with storing Fonts in a ListBox.  Since ListBox uses the
   ///  ToString() of its items for the text it displays, this class is needed to return
   ///  the name of the font, rather than its ToString() value.
   /// </summary>
   public class ListBoxFontItem 
   {
      public Font Font;

      public ListBoxFontItem(Font f) 
      {
         Font = f;
      }

      public override string ToString() 
      {
         return Font.Name;
      }
   }
}
开发者ID:.NET开发者,项目名称:System.Windows.Forms,代码行数:121,代码来源:MeasureItemEventArgs.ItemWidth

示例2: Main

//引入命名空间
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
   
class HatchBrushMenu: Form
{
     HatchStyleMenuItem hsmiChecked;
     const int iMin = 0, iMax = 52;
     public static void Main()
     {
          Application.Run(new HatchBrushMenu());
     }
     public HatchBrushMenu()
     {
          ResizeRedraw = true;
   
          Menu = new MainMenu();
          Menu.MenuItems.Add("&Hatch-Style");
   
          for (HatchStyle hs = (HatchStyle)iMin; hs <= (HatchStyle)iMax;hs++)
          {
               HatchStyleMenuItem hsmi = new HatchStyleMenuItem();
   
               hsmi.HatchStyle = hs;
               hsmi.Click += new EventHandler(MenuHatchStyleOnClick);
   
               if ((int)hs % 8 == 0)
                    hsmi.BarBreak = true;
   
               Menu.MenuItems[0].MenuItems.Add(hsmi);
          }
          hsmiChecked = (HatchStyleMenuItem) Menu.MenuItems[0].MenuItems[0];
          hsmiChecked.Checked = true;
     }
     void MenuHatchStyleOnClick(object obj, EventArgs ea)
     {
          hsmiChecked.Checked = false;
          hsmiChecked = (HatchStyleMenuItem) obj;
          hsmiChecked.Checked = true;
   
          Invalidate();
     }
     protected override void OnPaint(PaintEventArgs pea)
     {
          Graphics grfx = pea.Graphics;
   
          HatchBrush hbrush = new HatchBrush(hsmiChecked.HatchStyle,
                                             Color.White, Color.Black);
   
          grfx.FillEllipse(hbrush, ClientRectangle);
     }
}
class HatchStyleMenuItem: MenuItem
{
     const    int cxImage = 32, cyImage = 32, iMargin = 2;
     readonly int cxCheck, cyCheck; 
   
     public HatchStyle HatchStyle;
   
     public HatchStyleMenuItem()
     {
          OwnerDraw = true;
   
          cxCheck = SystemInformation.MenuCheckSize.Width;
          cyCheck = SystemInformation.MenuCheckSize.Height;
     }
     protected override void OnMeasureItem(MeasureItemEventArgs miea)
     {
          miea.ItemWidth  = 2 * cxImage + 3 * iMargin - cxCheck;
          miea.ItemHeight =     cyImage + 2 * iMargin;
     }
     protected override void OnDrawItem(DrawItemEventArgs diea)
     {
          diea.DrawBackground();
   
          if ((diea.State & DrawItemState.Checked) != 0)
          {
                ControlPaint.DrawMenuGlyph(diea.Graphics,
                                   diea.Bounds.Location.X + iMargin, 
                                   diea.Bounds.Location.Y + iMargin,
                                   cxImage, cyImage, MenuGlyph.Checkmark);
          }
          HatchBrush hbrush = new HatchBrush(HatchStyle,
                                             Color.White, Color.Black);
   
          diea.Graphics.FillRectangle(hbrush, 
                              diea.Bounds.X + 2 * iMargin + cxImage,
                              diea.Bounds.Y + iMargin, cxImage, cyImage);
     }
}
开发者ID:C#程序员,项目名称:System.Windows.Forms,代码行数:92,代码来源:MeasureItemEventArgs.ItemWidth


注:本文中的System.Windows.Forms.MeasureItemEventArgs.ItemWidth属性示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。