2009-04-07 17 views
7

से टेक्स्ट प्राप्त करें मेरे पास डेटा फ़ाइल युक्त सेल्स के साथ डेटाग्रिड व्यू है जिसमें डेटा है। असल में, मैं डेटाग्रिड व्यू में से कक्षों से चयनित टेक्स्ट प्राप्त करना चाहता हूं और बटन के क्लिक पर इसे टेक्स्टबॉक्स में प्रदर्शित करना चाहता हूं। बटन क्लिक करें घटना के लिए कोड है:डेटाग्रिड व्यू से चयनित सेल

Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim SelectedThings As String = DataGridView1.SelectedCells.ToString 
    TextBox1.Text = SelectedThings 
End Sub 

हालांकि में TextBox1 मैं:

System.Windows.Forms.DataGridViewSelectedCellCollection

मैं सोच रहा हूँ यह नहीं ' जैसा लगता है उतना सरल नहीं है। मैं एक सी डेवलपर हूं जो सिर्फ वीबी.नेट सीख रहा हूं।

उत्तर

7

DataGridView.SelectedCells कोशिकाओं का संग्रह है, इसलिए यह ToString() पर कॉल करने जितना आसान नहीं है। आपको संग्रह में प्रत्येक सेल के माध्यम से लूप करना होगा और इसके बजाय प्रत्येक सेल का मूल्य प्राप्त करना होगा।

निम्नलिखित सभी चयनित कक्षों के मूल्यों की अल्पविराम-सीमित सूची तैयार करेगा।

सी #

TextBox1.Text = ""; 
bool FirstValue = true; 
foreach(DataGridViewCell cell in DataGridView1.SelectedCells) 
{ 
    if(!FirstValue) 
    { 
     TextBox1.Text += ", "; 
    } 
    TextBox1.Text += cell.Value.ToString(); 
    FirstValue = false; 
} 

VB.NET (Translated ऊपर कोड से)

TextBox1.Text = "" 
Dim FirstValue As Boolean = True 
Dim cell As DataGridViewCell 
For Each cell In DataGridView1.SelectedCells 
    If Not FirstValue Then 
     TextBox1.Text += ", " 
    End If 
    TextBox1.Text += cell.Value.ToString() 
    FirstValue = False 
Next 
+0

तो मुझे प्रत्येक सेल को चुनने के लिए उपयोगकर्ता को चुनना है? –

+0

की तरह, लेकिन यह बिल्कुल ठीक नहीं है कि मैं इसे कैसे रखूंगा। आपको कोशिकाओं को "ढूंढने" की आवश्यकता नहीं है, क्योंकि उनके संदर्भ में संग्रह में आपको प्रस्तुत किया गया है। –

+1

वीबी.NET संस्करण में मामूली सुधार: & = + = (पाठ्यक्रम के दोनों कार्य) के बजाय। –

0

इस विशिष्ट मामले में, ToString() retruned ऑब्जेक्ट का नाम वापस आ जाएगी चयनितसेल संपत्ति द्वारा। (वर्तमान में चयनित कक्षों का संग्रह)।

यह व्यवहार तब होता है जब किसी ऑब्जेक्ट को ToString() विधियों के लिए कोई विशिष्ट निहितता नहीं होती है।

हमारे मामले में, आपको बस इतना करना है कि कोशिकाओं के संग्रह को फिर से चालू करना और स्ट्रिंग में इसके मान जमा करना है। फिर इस स्ट्रिंग को टेक्स्टबॉक्स पर दबाएं।

कैसे यात्रा को लागू करने के लिए यहाँ एक नजर है:

msdn

0

या मामले में आप सिर्फ (या सिर्फ एक चयनित सेल अगर एक चयन किया जाता है) पहली seleted बेचने का मूल्य की जरूरत है

TextBox1.Text = SelectedCells[0].Value.ToString(); 
6

इस प्रयास करें:

Dim i = Datagridview1.currentrow.index 
textbox1.text = datagridview1.item(columnindex, i).value 

यह काम करना चाहिए :)

0

दोनों दुनिया के सर्वश्रेष्ठ .....

Private Sub tsbSendNewsLetter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsbSendNewsLetter.Click 
     Dim tmpstr As String = "" 
     Dim cnt As Integer = 0 
     Dim virgin As Boolean = True 
     For cnt = 0 To (dgvDetails.Rows.Count - 1) 
      If Not dgvContacts.Rows(cnt).Cells(9).Value.ToString() Is Nothing Then 
       If Not dgvContacts.Rows(cnt).Cells(9).Value.ToString().Length = 0 Then 
        If Not virgin Then 
         tmpstr += ", " 
        End If 
        tmpstr += dgvContacts.Rows(cnt).Cells(9).Value.ToString() 
        virgin = False 
        'MsgBox(tmpstr) 
       End If 
      End If 
     Next 
     Dim email As New qkuantusMailer() 
     email.txtMailTo.Text = tmpstr 
     email.Show() 
    End Sub 
0

या, हम इस

dim i = dgv1.CurrentCellAddress.X 
dim j = dgv1.CurrentCellAddress.Y 
MsgBox(dgv1.Item(i,j).Value.ToString()) 
4

की तरह कुछ का उपयोग कर सकते, बस

MsgBox(GridView1.CurrentCell.Value.ToString) 
2
Private Sub DataGridView1_CellClick(ByVal sender As System.Object, _ 
            ByVal e As DataGridViewCellEventArgs) _ 
            Handles DataGridView1.CellClick 
    MsgBox(DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value) 
End Sub 
0

इस पृष्ठ पर जवाब का एक बहुत ही किसी एकल कक्ष के लिए लागू है, और ओ पी सभी चयनित कक्षों के लिए पूछा गया।

यदि आप केवल इतना चाहते कक्ष सामग्री है, और आप वास्तविक कोशिकाओं है कि चुने गए हैं के लिए संदर्भ के बारे में परवाह नहीं है, तो आप सिर्फ यह कर सकते हैं:

Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim SelectedThings As String = DataGridView1.GetClipboardContent().GetText().Replace(ChrW(9), ",") 
    TextBox1.Text = SelectedThings 
End Sub 

जब Button1 क्लिक किया जाता है, इस भरना होगा चयनित कोशिकाओं के अल्पविराम से अलग मूल्यों के साथ TextBox1

संबंधित मुद्दे