तरह से है कि मैं हाल ही में एक आवेदन में इस का दरवाजा खटखटाया मेरे अपने DataGridViewColumn और DataGridViewCell वर्गों में से एक के बंद इनहेरिट का निर्माण करना था मौजूदा डेटा जैसे DataGridViewTextBoxColumn और DataGridViewTextBoxCell।
आपके इच्छित सेल के प्रकार के आधार पर, आप बटन, चेकबॉक्स, कॉम्बोबॉक्स आदि जैसे अन्य लोगों का उपयोग कर सकते हैं। बस System.Windows.Forms में उपलब्ध प्रकारों पर नज़र डालें।
कोशिकाएं उनके मूल्य के साथ वस्तुओं के साथ सौदा करती हैं ताकि आप अपनी कार कक्षा को सेल के मूल्य में पारित कर सकें।
सेटवैल्यू और GetValue ओवरराइड करने से आपको मूल्य को संभालने के लिए आवश्यक अतिरिक्त तर्क प्राप्त करने की अनुमति मिल जाएगी।
उदाहरण के लिए:
public class CarCell : System.Windows.Forms.DataGridViewTextBoxCell
{
protected override object GetValue(int rowIndex)
{
Car car = base.GetValue(rowIndex) as Car;
if (car != null)
{
return car.Maker.Name;
}
else
{
return "";
}
}
}
स्तंभ वर्ग मुख्य बात आप सब करने की ज़रूरत अपने कस्टम सेल वर्ग के लिए CellTemplate सेट किया गया है पर।
public class CarColumn : System.Windows.Forms.DataGridViewTextBoxColumn
{
public CarColumn(): base()
{
CarCell c = new CarCell();
base.CellTemplate = c;
}
}
इन कस्टम कॉलम का उपयोग करके/DataGridView पर कोशिकाओं यह है कि आप अपने DataGridView करने के लिए अतिरिक्त कार्यक्षमता का एक बहुत जोड़ने के लिए अनुमति देता है।
मैंने उन्हें स्ट्रिंग मानों पर कस्टम स्वरूपण लागू करने के लिए GetFormattedValue को ओवरराइड करके प्रदर्शित स्वरूपण को बदलने के लिए उपयोग किया।
मैंने पेंट पर ओवरराइड भी किया ताकि मैं मूल्य परिस्थितियों के आधार पर कस्टम सेल हाइलाइटिंग कर सकूं, सेल स्टाइल को बदलना। बैककोलर जो मैं मूल्य के आधार पर चाहता था।
+1 मुझे लगता है कि यह सरल वस्तुओं के लिए एक ठोस समाधान है – karlipoppins
यह सिर्फ एक संपत्ति चाहते हैं, लेकिन यह आपके साथ काम नहीं करेगा, उस वस्तु के गुणक गुण चाहते हैं। –