2012-07-04 10 views
40

मैं केवल DataGridView का उपयोग केवल चीजों को दिखाने के लिए करना चाहता हूं, और मैं चाहता हूं कि उपयोगकर्ता DataGridView से किसी भी पंक्ति, फ़ील्ड या कुछ भी चुनने में सक्षम न हो।डेटाग्रिड व्यू में चयन करने की क्षमता को अक्षम कैसे करें?

मैं यह कैसे कर सकता हूं?

+1

नहीं का चयन करने में सक्षम होने वास्तव में बुरा यूजर इंटरफेस डिजाइन (बहुत उपयोगकर्ता के लिए कष्टप्रद) है। क्या होगा यदि उपयोगकर्ता आपकी रिपोर्ट से कुछ कॉपी करना चाहता है? मुझे लगता है कि केवल पढ़ने के लिए पर्याप्त होगा (जैसा कि नीचे दिए गए उत्तरों में वर्णित है)। – banging

उत्तर

1

उपयोग DataGridView.ReadOnly property

MSDN example में कोड एक DataGridView नियंत्रण मुख्यतः प्रदर्शन लिए करना में इस संपत्ति का उपयोग दिखाता है। इस उदाहरण में, नियंत्रण की दृश्य उपस्थिति को कई तरीकों से अनुकूलित किया गया है और नियंत्रण सीमित इंटरएक्टिविटी के लिए कॉन्फ़िगर किया गया है।

नमूना कोड में ये सेटिंग का निरीक्षण करें:

// Set property values appropriate for read-only 
// display and limited interactivity 
dataGridView1.AllowUserToAddRows = false; 
dataGridView1.AllowUserToDeleteRows = false; 
dataGridView1.AllowUserToOrderColumns = true; 
dataGridView1.ReadOnly = true; 
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; 
dataGridView1.MultiSelect = false; 
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None; 
dataGridView1.AllowUserToResizeColumns = false; 
dataGridView1.ColumnHeadersHeightSizeMode = 
DataGridViewColumnHeadersHeightSizeMode.DisableResizing; 
dataGridView1.AllowUserToResizeRows = false; 
dataGridView1.RowHeadersWidthSizeMode = 
DataGridViewRowHeadersWidthSizeMode.DisableResizing; 
+2

अगर मैं वोट दे सकता हूं तो मैं चाहता हूं। अभी तक पर्याप्त प्रतिनिधि नहीं है। हालांकि उपयोगकर्ता को सेल चुनने से रोकने के लिए कुछ भी नहीं करता है। – JSON

+0

@JSON - वोट ऊपर या नीचे दिमाग मत करो। समुदाय के सीखने के बजाय समाधान पाने के लिए बहुत अच्छा होगा। –

2

मैं false करने के लिए Enabled संपत्ति सेट करके ऐसा तय की।

+5

अभी तक चेक नहीं किया गया है, लेकिन मुझे लगता है कि यदि आप डेटाग्रिडव्यू को अक्षम करते हैं तो आप कुछ दृश्य प्रभाव खो देते हैं। –

+0

निश्चित रूप से काम करने के लिए लेकिन @MahdiTahsildari के रूप में कहा गया है कि आपको एक ग्रेड आउट इंटरफ़ेस मिलेगा। – C4u

+0

नोटिस: फिर आपके पास डबलक्लिक उपलब्ध नहीं है – SenioreT

91

मैं इस के साथ जाना चाहते हैं:

private void myDataGridView_SelectionChanged(Object sender, EventArgs e) 
{ 
    dgvSomeDataGridView.ClearSelection(); 
} 

मैं व्यापक दावे से सहमत नहीं हैं कि कोई DataGridView unselectable होना चाहिए। कुछ यूआई उपकरण या टचस्रीन के लिए बनाए जाते हैं, और एक चयन को उपयोगकर्ता को यह सोचने की अनुमति मिलती है कि चयन वास्तव में कहीं उन्हें प्राप्त करेगा।

नियंत्रण पर ReadOnly = true सेट करना इस पर कोई प्रभाव नहीं पड़ता कि सेल या पंक्ति का चयन किया जा सकता है या नहीं। और Enabled = false सेट करने के लिए दृश्य और कार्यात्मक डाउनसाइड्स हैं।

एक और विकल्प है चयनित रंगों को नियंत्रित करने के लिए चयनित रंगों को सटीक रूप से सेट करना है, लेकिन यदि आप सेल के पीछे रंग में हेरफेर करना चाहते हैं, तो यह विधि कुछ ग़लत परिणाम भी उत्पन्न करती है।

+0

प्रश्न "मैं डेटाग्रिडव्यू चयनित पंक्ति पृष्ठभूमि रंग कैसे बदलूं?" चयनित पंक्ति के लिए पृष्ठभूमि और अग्रभूमि रंग सेट करने का वर्णन करता है: Question
यह मेरे लिए काफी अच्छा काम करता है। – user1036944

+0

हम्म .. मुझे आश्चर्य है कि सभी वीबी.NET कोड उत्तरों को सी # में संपादित किया गया है .... – edhubbell

+0

यह एक बेहतर है :) –

1

मैं false करने के लिए सभी AllowUser... गुण स्थापित करने, ReadOnlytrue को, RowHeadersVisiblefalse को, ScollBarsNone पाया, तो faking the prevention of selection मेरे लिए सबसे अच्छा काम किया। Enabled से false सेटिंग नहीं कर रहा है, फिर भी उपयोगकर्ता को ग्रिड से डेटा कॉपी करने की अनुमति देता है।

निम्नलिखित कोड भी नज़र को साफ जब आप एक साधारण प्रदर्शन ग्रिड चाहते (यह मानते हुए पंक्तियों में एक ही ऊंचाई के हैं):

int width = 0; 
for (int i = 0; i < dataGridView1.Columns.Count; i++) 
{ 
    width += dataGridView1.Columns[i].Width; 
} 

dataGridView1.Width = width; 
dataGridView1.Height = dataGridView1.Rows[0].Height*(dataGridView1.Rows.Count+1); 
9

आप नीचे दिए गए के रूप में चयनित कोशिकाओं के लिए एक पारदर्शी पृष्ठभूमि का रंग निर्धारित कर सकते हैं:

DataGridView.RowsDefaultCellStyle.SelectionBackColor = System.Drawing.Color.Transparent; 
1

यह एक आकर्षण की तरह मेरे लिए काम किया:

row.DataGridView.Enabled = false; 

row.DefaultCellStyle.BackColor = Color.LightGray; 

row.DefaultCellStyle.ForeColor = Color.DarkGray; 

(जहां पंक्ति = DataGridView।NewRow (उचित भार के);)

1

Enabled संपत्ति false को

या

this.dataGridView1.DefaultCellStyle.SelectionBackColor = this.dataGridView1.DefaultCellStyle.BackColor; 
this.dataGridView1.DefaultCellStyle.SelectionForeColor = this.dataGridView1.DefaultCellStyle.ForeColor; 
संबंधित मुद्दे