نوشته شده توسط
arastoahmadi
بازم ممنون از پاسختون عزیز ، دوست گرامی مثال از این لیست باکس دارید ؟
روال کار خیلی مشخص ئه، در DrawItem اون آیتمی که ListBox میخواد الان نشون بده رو در جایی که ListBox بهمون میگه رسم می کنیم و در MeasureItem ابعاد آیتمی که ListBox میخواد ابعادش رو بدونه مشخص می کنیم.
private void button1_Click(object sender, EventArgs e)
{
listBox1.Items.Add(new object[] { textBox1.Text, DateTime.Now });
textBox1.Text = "";
textBox1.Focus();
}
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
if ((e.Index < 0) || (e.Index >= listBox1.Items.Count))
{
return;
}
var item = (object[])listBox1.Items[e.Index];
var text = (string)item[0];
var date = (DateTime)item[1];
var format = new StringFormat (StringFormat.GenericDefault);
format.FormatFlags |= StringFormatFlags.NoClip | StringFormatFlags.DirectionRightToLeft;
format.Trimming = StringTrimming.None;
var size = Size.Round( e.Graphics.MeasureString (text, listBox1.Font, listBox1.ClientSize.Width - 20, format));
size.Width = Math.Max(30, size.Width);
var rect = new Rectangle(e.Bounds.Right - size.Width - 20, e.Bounds.Top, size.Width + 18, size.Height + 20);
var renderer = new VisualStyleRenderer (VisualStyleElement.ToolTip.Balloon.Normal);
renderer.DrawBackground(e.Graphics, rect);
rect.Inflate(-5, -5);
e.Graphics.DrawString(text, listBox1.Font, Brushes.Black, rect, format);
format.LineAlignment = StringAlignment.Far;
rect.Offset(0, 3);
using (var font = new Font(listBox1.Font.FontFamily, listBox1.Font.SizeInPoints - 2f))
{
e.Graphics.DrawString(date.ToString("HH:mm"), font, Brushes.Gray, rect, format);
}
}
private void listBox1_MeasureItem(object sender, MeasureItemEventArgs e)
{
var item = (object[]) listBox1.Items[e.Index];
var text = (string)item[0];
var date = (DateTime)item[1];
var format = new StringFormat( StringFormat.GenericDefault);
format.FormatFlags |= StringFormatFlags.DirectionRightToLeft;
format.Trimming = StringTrimming.None;
var size = Size.Round(e.Graphics.MeasureString (text, listBox1.Font, listBox1.ClientSize.Width - 20, format));
e.ItemHeight = size.Height + 22;
}
f6.png
ChatBoxSample.rar