Beispiel #1
0
        public void Draw(ListViewItem item, Graphics g, Rectangle rect)
        {
            if (!myOffsetsAreCorrect)
            {
                UpdateOffsets(g);
            }

            int startOffset = CalculateOffset(item);

            for (int i = 0; i < myPainters.Length; i++)
            {
                IItemPainter painter = myPainters[i];

                Size size      = painter.GetSize(item, g);
                int  offset    = myOffsets[i] + startOffset;
                int  endOffset = i == myPainters.Length - 1 ? rect.Width : myOffsets[i + 1];

                switch (myAlignments[i])
                {
                case ColumnAlignment.Right:
                    offset += (endOffset - offset) - size.Width;
                    break;

                case ColumnAlignment.Center:
                    offset += ((endOffset - offset) - size.Width) / 2;
                    break;
                }

                painter.Draw(item, g, new Rectangle(offset, 0, endOffset - offset, 0));
            }
        }
Beispiel #2
0
        /// <summary>
        /// Draws Item
        /// </summary>
        private void DrawItem(ref NMLVCUSTOMDRAW customDraw)
        {
            try
            {
                ListViewItem item = this.Items[customDraw.nmcd.dwItemSpec];

                if (myItemPainter != null && myItemPainter.IsHandled(item))
                {
                    using (Graphics g = Graphics.FromHdc(customDraw.nmcd.hdc))
                    {
                        myItemPainter.Draw(item, g, new Rectangle(0, 0, ClientSize.Width, 0));
                    }
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine("CustomListView.DrawItem failed : " + ex, "UI");
            }
        }
Beispiel #3
0
        //    private Rectangle GetFullItemRectangle(int index)
        //    {
        //      //TODO: GetItemRectangle works strange
        //      Rectangle rectangle = GetItemRectangle(index);
        //      rectangle.Height = GetItemHeight(index) + 1;
        //      return rectangle;
        //    }

        //    protected override void OnSelectedIndexChanged(EventArgs e)
        //    {
        //      try
        //      {
        //        SuspendLayout();
        //        if (myOldSelectedIndex != SelectedIndex)
        //        {
        //          if ( myOldSelectedIndex >= 0 && myOldSelectedIndex < Items.Count )
        //            Invalidate(GetFullItemRectangle(myOldSelectedIndex));
        //          int index = SelectedIndex;
        //          if ( index >= 0 && index < Items.Count )
        //            Invalidate(GetFullItemRectangle(index));
        //          myOldSelectedIndex = SelectedIndex;
        //        }
        //        base.OnSelectedIndexChanged (e);
        //        ResumeLayout(false);
        //      }
        //      catch (Exception ex)
        //      {
        //        System.Console.Write( ex );
        //      }
        //    }
        //
        //
        protected override void OnDrawItem(DrawItemEventArgs e)
        {
            try
            {
                if (myItemPainter != null && e.Index >= 0 && e.Index < Items.Count)
                {
                    //System.Console.WriteLine(e.Bounds.Height);
                    myItemPainter.Draw(Items[e.Index], e.Graphics, e.Bounds, e.Index == mySelectedIndexPreview);
                }
                else
                {
                    base.OnDrawItem(e);
                }
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine("CustomListBox.DrawItem failed : " + ex, "UI");
                Invalidate(e.Bounds);
            }
        }