コード例 #1
0
        private void DrawWithHighlighting(String description, String textToHighlight, Graphics graphics,
                                          Rectangle descriptionBounds, Color textColor, Color backColor)
        {
            var findMatch         = new FindMatch(description);
            int ichHighlightBegin = description.ToLower().IndexOf(textToHighlight.ToLower(), StringComparison.Ordinal);

            // A very short search only matches at the front of a word
            if ((textToHighlight.Length < ProteinMatchQuery.MIN_FREE_SEARCH_LENGTH) && (ichHighlightBegin > 0))
            {
                // Insist on a leading space for match
                ichHighlightBegin = description.ToLower().IndexOf(" " + textToHighlight.ToLower(), StringComparison.Ordinal); // Not L10N
                if (ichHighlightBegin > 0)
                {
                    ichHighlightBegin++; // Don't really want to highlight the space
                }
            }
            if (ichHighlightBegin >= 0)
            {
                findMatch = findMatch.ChangeRange(ichHighlightBegin, ichHighlightBegin + textToHighlight.Length);
            }
            else
            {
                findMatch = findMatch.ChangeRange(0, 0); // No highlighting
            }
            var textRendererHelper = new TextRendererHelper
            {
                Font          = ListView.Font,
                HighlightFont = new Font(ListView.Font, FontStyle.Bold),
                ForeColor     = textColor,
                BackColor     = backColor,
            };

            textRendererHelper.DrawHighlightedText(graphics, descriptionBounds, findMatch);
        }
コード例 #2
0
        private void listView_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
        {
            Brush brush;
            Color backColor;
            Color foreColor;

            if (e.Item.Selected)
            {
                if (listView.Focused)
                {
                    brush     = SystemBrushes.Highlight;
                    backColor = SystemColors.Highlight;
                    foreColor = SystemColors.HighlightText;
                }
                else
                {
                    // We use the same colors here as TreeViewMS does for
                    // drawing unfocused selected rows.
                    brush     = Brushes.LightGray;
                    backColor = Color.LightGray;
                    foreColor = SystemColors.WindowText;
                }
            }
            else
            {
                brush     = SystemBrushes.Window;
                backColor = SystemColors.Window;
                foreColor = SystemColors.WindowText;
            }
            if (e.ColumnIndex == 0)
            {
                // Erase the entire background when drawing the first sub-item
                e.Graphics.FillRectangle(brush, e.Item.Bounds);
            }
            if (e.ColumnIndex == colHdrDisplayText.Index)
            {
                var findResult         = (FindResult)e.Item.Tag;
                var textRendererHelper = new TextRendererHelper
                {
                    ForeColor     = foreColor,
                    BackColor     = backColor,
                    Font          = e.Item.Font,
                    HighlightFont = new Font(e.Item.Font, FontStyle.Bold),
                };
                textRendererHelper.DrawHighlightedText(e.Graphics, e.SubItem.Bounds, findResult.FindMatch);
            }
            else
            {
                e.SubItem.ForeColor = foreColor;
                e.DrawText();
            }
            if (e.ColumnIndex == 0)
            {
                e.DrawFocusRectangle(e.Bounds);
            }
        }