我有一个与form
分开弹出的DataGridView
。它上面有一个DataTable
,显示用户访问过的所有网址。所有网址都保存在字符串列表中,然后转换为DataGridView
,然后将值放入private DataTable ConvertListToDataTable(List<string> l)
{
table.Columns.Add("urls");
int i = 0;
foreach(string s in l)
{
table.Rows.Add();
table.Rows[i].SetField("urls", s);
i++;
}
return table;
}
public void pageload(List<string> list)
{
table = ConvertListToDataTable(list);
dataGridView1.DataSource = table;
}
private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
Form1 form = new Form1();
form.pageInput.Text = dataGridView1.SelectedRows.ToString();
string input = form.pageInput.Text;
form.loadPage(input);
}
。我可以看到带有网址的表格。
我想在单元格上启用双击,这样如果用户双击它,他将被转换回该网址。
选择行(单击url)并将其解析为字符串时出错。看起来它是空的,因为页面没有加载
DataGridView
我尝试将SelectionMode
textBox
更改为 FullRowSelect , CellSelect 和 RowHeaderSelect ,但它没有改变一切。试图更改单元格和行的双击。我还尝试在表单上放置textBox1.Text = dataGridView1.SelectedRows.ToString()
以进行调试。所以当我分配时:
Windows.Forms.DataGridViewSelectedCellCollection
我得到的只是ToString()
,所以它绝对是空的。
问题是,如果{{1}}不起作用,我该如何获取该网址值?谢谢您的帮助。
答案 0 :(得分:0)
如果它是一个集合,你必须以非常方式处理集合中的每个元素。否则.ToString()只会返回元数据中的selectedRows文本,即DataGridViewSelectedCellCollection。
尝试类似的事情,
foreach(elementType i in dataGridView1.SelectedRows)
{
//do something you want here such as TextBox.Text = TextBox.Text + i.ToString();
}
答案 1 :(得分:0)
我认为你想要/需要的是更像这样的东西:
private void dataGridView1_CellContentDoubleClick(object sender, DataGridViewCellEventArgs e)
{
string URL = "";
if (dataGridView1[e.ColumnIndex, e.RowIndex].Value != null)
{
//get the URL from the cell that you double-clicked on
URL = dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString();
}
else
return;
//put your code to launch the URL in a browser here
}
另一种选择是使用像这样的MouseDoubleClick事件:
private void dataGridView1_MouseDoubleClick(object sender, MouseEventArgs e)
{
//this will allow us to find out where we clicked in the datagridview
DataGridView.HitTestInfo hti = dataGridView1.HitTest(e.X, e.Y);
if (e.Button == MouseButtons.Left && hti.Type == DataGridViewHitTestType.Cell)
{
string URL = "";
if (dataGridView1[hti.ColumnIndex, hti.RowIndex].Value != null)
{
//get the URL from the cell that you double-clicked on
URL = dataGridView1[hti.ColumnIndex, hti.RowIndex].Value.ToString();
}
else
return;
//put your code to launch the URL in a browser here
}
}
答案 2 :(得分:0)
首先,您想要的事件可能是CellDoubleClick()
而不是CellContentDoubleClick()
然后这样做:
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
{
//Makes sure that a valid cell was double clicked.
if (e.ColumnIndex > -1 && e.RowIndex > -1)
{
Form1 form = new Form1();
form.pageInput.Text = dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString();
string input = form.pageInput.Text;
form.loadPage(input);
}
}
让我知道这是否有效!