データを含むデータベースファイルのセルを含むDataGridViewがあります。基本的に、DataGridViewのselectedセルからテキストを取得し、ボタンをクリックするとテキストボックスに表示したいと考えています。ボタンクリックイベントのコードは次のとおりです。
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
見た目ほど簡単ではないと思います。私はVB.NETを学んでいるだけのC開発者です。
_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はall選択したセルを要求しました。
必要なのがセルの内容だけで、選択されている実際のセルへの参照を気にしない場合は、次のようにすることができます。
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
は、選択したセルのカンマ区切りの値です。
両方の長所.....
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())
この特定のケースでは、ToString()は、SelectedCellプロパティによって返されたオブジェクトの名前を返します。(現在選択されているセルのコレクション)。
この現象は、オブジェクトにToString()メソッドに対する特定の実装がない場合に発生します。
私たちの場合、セルのコレクションを反復処理し、その値を文字列に累積するだけです。次に、この文字列をTextBoxにプッシュします。
反復を実装する方法をここで見てください:
または、最初に選択したセルの値だけが必要な場合(または、選択されている場合は選択されたセルが1つだけ)
TextBox1.Text = SelectedCells[0].Value.ToString();