質問

私はデータが含まれているデータベースファイルからの細胞とのDataGridViewを持っています。基本的に、私はDataGridViewの中の選択の細胞からテキストを取得し、ボタンをクリックするだけで、テキストボックスに表示したいです。ボタンのクリックイベントのコードがあります:

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

私はそれは思ったほど簡単ではありません考えています。私はCの開発者だけでVB.NETを勉強しています。

役に立ちましたか?

解決

DataGridView.SelectedCells のコレクションです細胞の、それはそれでToString()を呼び出すのと同じくらい簡単ではありません。あなたは、コレクション内の各セルをループしていて、代わりに各セルの値を取得します。

以下は、選択されたすべてのセルの値のカンマ区切りのリストを作成します。

をC#

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

VB.NET の(上記のコードから翻訳さの)

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

他のヒント

これを試してください:

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

これは動作するはずです:)

単に

MsgBox(GridView1.CurrentCell.Value.ToString)
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

このページの答えの多くは、単一のセルのみに適用され、OPはのすべてを選択したセルを求めています。

あなたが望むすべてのセルの内容で、あなたが選択されている実際のセルへの参照を気にしない場合は、あなただけのこの操作を行うことができます:

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を埋めるだろう。

この特定の場合、ToStringメソッド()でSelectedCellプロパティによってretrunedオブジェクトの名前を返す。(現在選択された細胞のコレクション)。

オブジェクトがToStringメソッド()メソッドに関する特別implenetationを有していない場合

この現象が発生します。

私たちのケースでは、あなたがしなければならないすべては、細胞のコレクションを反復処理するために、文字列にその値を蓄積することです。その後、テキストボックスにこの文字列をプッシュします。

の繰り返しを実装する方法をここで見てます:

MSDN

または(いずれかが選択されている場合は一つだけ選択したセル)の場合には、あなただけの最初seleted販売の値を必要とする

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

両方の世界のベスト.....

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

や、私たちはこのようなものを使用することができます。

dim i = dgv1.CurrentCellAddress.X
dim j = dgv1.CurrentCellAddress.Y
MsgBox(dgv1.Item(i,j).Value.ToString())
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top