विजुअल सी # एक्सप्रेस संस्करण में, क्या किसी सूची बॉक्स में कुछ (लेकिन सभी नहीं) आइटम बनाना संभव है? मुझे एपीआई में इसके लिए कोई भी विकल्प नहीं मिल रहा है।मैं लिस्टबॉक्स में कुछ आइटम कैसे बोल्ड कर सकता हूं?
उत्तर
आपको Listbox के DrawMode को DrawMode.OwnerDrawFixed में बदलने की आवश्यकता है। MSDN पर इन लेखों की जाँच करें:
DrawMode Enumeration
ListBox.DrawItem Event
Graphics.DrawString Method
इसके अलावा MSDN मंचों पर इस सवाल को देखो: (दोनों आइटम
Question on ListBox items
एक साधारण उदाहरण - ब्लैक-एरियल-10-बोल्ड):
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ListBox1.Items.AddRange(new Object[] { "First Item", "Second Item"});
ListBox1.DrawMode = DrawMode.OwnerDrawFixed;
}
private void ListBox1_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
e.Graphics.DrawString(ListBox1.Items[e.Index].ToString(), new Font("Arial", 10, FontStyle.Bold), Brushes.Black, e.Bounds);
e.DrawFocusRectangle();
}
}
महान उदाहरण और लिंक। इच्छा है कि मैं इसे दो बार वोट दे सकता हूं! –
कोड का प्रदर्शन करने के बाद यह कोड है।
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
foreach (FontFamily fam in FontFamily.Families)
{
listBox1.Items.Add(fam.Name);
}
listBox1.DrawMode = DrawMode.OwnerDrawFixed; // 属性里设置
}
private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
e.Graphics.DrawString(listBox1.Items[e.Index].ToString(), new Font(listBox1.Items[e.Index].ToString(), listBox1.Font.Size), Brushes.Black, e.Bounds);
//e.DrawFocusRectangle();
}
}
}
मिंडोगस Mozūras के समाधान के लिए जोड़ने के लिए, मैं एक समस्या है जहाँ मेरे e.Bounds
इतना बड़ा नहीं था और टेक्स्ट कटा हो रही थी। इस समस्या को हल करने के लिए (here पोस्ट के लिए धन्यवाद), आप OnMeasureItem
ईवेंट ओवरराइड करते हैं और अपने ड्रामोड को DrawMode.OwnerDrawVariable
में बदलते हैं।
डिजाइनर में:
listBox.DrawMode = DrawMode.OwnerDrawVariable;
हैंडलर में:
void listBox_MeasureItem(object sender, MeasureItemEventArgs e)
{
e.ItemHeight = 18;
}
ऊंचाई टेक्स्ट कटा होने के अपने मुद्दों के हल।
बस यह कहने के लिए कि मुझे अपने विकास कंप्यूटर पर यह समस्या नहीं है, लेकिन टर्मिनल सर्वर पर शिपिंग करते समय हमें यह मिला। तो मैं सुरक्षा के लिए अपने कोड पर इसे लागू करने की दृढ़ता से अनुशंसा करता हूं। – Jonas
प्रेषक का उपयोग करने वाला एक और सामान्य उदाहरण, और वास्तव में अग्रभूमि रंग का सम्मान करता है (उदाहरण के लिए, आइटम का चयन किया जाता है, उदाहरण के लिए, या उपयोगकर्ता किसी अन्य रंग सेट का उपयोग करता है, जहां काला अग्रभूमि रंग वास्तव में पठनीय नहीं है) और वर्तमान सूची बॉक्स फ़ॉन्ट:
private void listBoxDrawItem (object sender, DrawItemEventArgs e)
{
Font f = e.Font;
if (e.Index == 1) //TODO: Your condition to make text bold
f = new Font(e.Font, FontStyle.Bold);
e.DrawBackground();
e.Graphics.DrawString(((ListBox)(sender)).Items[e.Index].ToString(), f, new SolidBrush(e.ForeColor), e.Bounds);
e.DrawFocusRectangle();
}
आपको DrawMode को स्वामी DrawFixed पर सेट करने की आवश्यकता है (उदाहरण के लिए, डिज़ाइनर में)।
चयनित आइटम बोल्ड
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ListBox1.Items.AddRange(new Object[] { "me", "myself", "bob"});
// set the draw mode to fixed
ListBox1.DrawMode = DrawMode.OwnerDrawFixed;
}
private void ListBox1_DrawItem(object sender, DrawItemEventArgs e)
{
// draw the background
e.DrawBackground();
// get the font
Font font = new Font(e.Font, (e.State & DrawItemState.Selected) == DrawItemState.Selected ? FontStyle.Bold : FontStyle.Regular);
// draw the text
e.Graphics.DrawString(ListBox1.Items[e.Index].ToString(), font, new SolidBrush(ListBox1.ForeColor), e.Bounds);
e.DrawFocusRectangle();
}
}
- 1. मैं एंड्रॉइड में स्टाइल बोल्ड कैसे दे सकता हूं?
- 2. मैं क्लोजर में वेक्टर आइटम कैसे अपडेट कर सकता हूं?
- 3. लिस्टबॉक्स लंबे आइटम संकेत
- 4. आइटम टेम्पलेट: लिस्टबॉक्स बनाम आइटम नियंत्रण
- 5. सी # लिस्टबॉक्स सेट चयनित आइटम
- 6. मैं अपने लिस्टबॉक्स में वर्टिकल स्क्रॉलबार कैसे प्राप्त कर सकता हूं?
- 7. क्या मैं QListWidget के प्रत्येक आइटम में कुछ उपयोगकर्ता डेटा संग्रहीत कर सकता हूं?
- 8. क्या मैं कुछ उदाहरणों में प्रतिरूपण बंद कर सकता हूं
- 9. क्या मैं स्मृति में कुछ भी एक्सेस कर सकता हूं?
- 10. मैं वीआईएम में वाईएएमएल आइटम कैसे जोड़ सकता हूं?
- 11. मैं स्ट्रिंग सरणी में नया आइटम कैसे जोड़ सकता हूं?
- 12. मैं टूलबार में कोई आइटम कैसे बना सकता हूं WPF
- 13. मैं शीर्ष एक्शनबार में आइटम कैसे जोड़ सकता हूं?
- 14. मैं एक योजनाबद्ध दृश्य कैसे बना सकता हूं जिस पर मैं आइटम रख सकता हूं, स्थानांतरित कर सकता हूं और कनेक्ट कर सकता हूं?
- 15. मैं डब्ल्यूपीएफ/डब्ल्यूपी 7 में लिस्टबॉक्स में स्ट्रिंग्स की सूची कैसे जोड़ सकता हूं?
- 16. मैं सिस्टम के लिए बोल्ड टाइपफेस कैसे सेट कर सकता हूं। Windows.Fontstyle?
- 17. मैं अनिश्चित काल तक लूप कैसे कर सकता हूं, लेकिन कुछ स्थितियों पर रोक सकता हूं?
- 18. मैं सूची बॉक्स को अपने आइटम टेक्स्ट को रीफ्रेश कैसे कर सकता हूं?
- 19. चेक किए गए लिस्टबॉक्स में
- 20. फ़ॉर्म में फोरच कंट्रोल, मैं अपने फॉर्म में सभी टेक्स्टबॉक्स में कुछ कैसे कर सकता हूं?
- 21. टेक्स्टफील्ड में कुछ शब्द के लिए बोल्ड कैसे रखें?
- 22. मैं सूची दृश्य में आइटम को कैसे अचयनित कर सकता हूं?
- 23. मैं PowerShell में Folder.CopyHere के साथ मौजूदा आइटम कैसे ओवरराइट कर सकता हूं?
- 24. कैसे आप specifiy कितने आइटम दिखाए जाते हैं एक लिस्टबॉक्स में (ऊंचाई) कर
- 25. मैं पायथन में किसी सूची से आइटम कैसे फ़िल्टर कर सकता हूं?
- 26. क्या मैं सीएसएस के साथ "एरियल राउंड एमटी बोल्ड" का उपयोग कर सकता हूं?
- 27. आइटमसोर्स का उपयोग करके मैं एक WPF ListBox में अतिरिक्त आइटम कैसे जोड़ सकता हूं?
- 28. मैं सूची बॉक्स को पारदर्शी कैसे बना सकता हूं, लेकिन सूची बॉक्स आइटम WPF में अपारदर्शी हो सकता है?
- 29. WPF: मैं ListBox आइटम पर क्लिक कैसे संभाल सकता हूं?
- 30. मैं जीसी परीक्षण कैसे कर सकता हूं?
आप WPF पर कर रहे हैं? इस मामले में, यह बहुत आसान है – Gishu
मुझे खेद है कि मैं एक .NET नौसिखिया का थोड़ा सा हूं, मुझे यह भी यकीन नहीं है कि डब्ल्यूपीएफ क्या है। –