DataGridViewの選択したセルからテキストを取得します。
-
05-09-2019 - |
質問
私はデータが含まれているデータベースファイルからの細胞との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())