ListBox ta Arama Yapmak ve Seçili Itemin Yazı ve Arka Plan Rengini Değiştirmek
Merhaba arkadaşlar, bu makalemizde Listboxta arama yapacağız. Bulunan kayıtların yazı ve arka plan rengini değiştireceğiz.
ListBox ın SelectionMode özelliğini MultiSimple yapın. ListBox ın yazı ve arka plan rengini değiştirebilmek için, DrawMode özelliğini OwnerDrawFixed olarak seçmemiz gerekmektedir.
Şekil 1
Şekil 2
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace listbox_search
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox1.SelectionStart = textBox1.Text.Length;
for (int i = 0; i < listBox1.Items.Count; i++)
{
if (listBox1.Items[i].ToString().Contains(textBox1.Text))
{
listBox1.SetSelected(i, true);
if (textBox1.Text == "")
{
listBox1.SetSelected(i, false);
}
}
else
{
listBox1.SetSelected(i, false);
}
}
}
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
ListBox listBox = (ListBox)sender;
e.DrawBackground();
Brush myBrush = Brushes.Black;
Font myFont;
if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
{
myBrush = Brushes.Red;
myFont= e.Font;
listBox1.Font = new Font("Arial", 12, FontStyle.Bold);
e.Graphics.FillRectangle(new SolidBrush(Color.Yellow), e.Bounds);
}
else
{
myFont = new Font("Arial", 12, FontStyle.Regular);
e.Graphics.FillRectangle(Brushes.White, e.Bounds);
}
e.Graphics.DrawString(listBox.Items[e.Index].ToString(), myFont, myBrush, e.Bounds);
}
}
}
Bir makalenin daha sonuna geldik. Bir sonraki makalede görüşmek üzere. Bahadır ŞAHİN