我的 form1 与datagridview
(2列,1列ID,1列文字)。
我也有"edit button"
。当我点击"edit button"
时,文本列将在 form2 的文本框中显示。
在 form2 我有" select button
"编辑路径和"save button"
。
如何通过按"save button"
将 form2 中已编辑的文本传递到form1中的列datagridview。
form1 中的代码编辑按钮(dgv_sourcefolder是datagridview1):
private void DGV_sourcefolder_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (DGV_sourcefolder.Columns[e.ColumnIndex].Name == "Edit")
{
string y = "";
int i;
i = ((DataGridView)sender).SelectedCells[0].RowIndex;
y = ((DataGridView)sender).Rows[i].Cells[1].Value.ToString();
//MessageBox.Show(y.ToString());
DTO.data = y;
Form2 form = new Form2();
form.Show();
Hide();
}
}
form2中的代码选择按钮:
private void Btn_select_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
if(fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
textBox1.Text = fbd.SelectedPath;
}
}
答案 0 :(得分:0)
你的表格应该是这样的。
public class Form2 : Form
{
private DataGridViewRow dataGridViewRow;
public Form2(DataGridViewRow row)
{
dataGridViewRow = row;
}
private void Btn_select_Click(object sender, EventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
textBox1.Text = fbd.SelectedPath;
}
}
private void Btn_Save_Click(object sender, EventArgs e)
{
this.dataGridViewRow.Cells[1].Value = textBox1.Text;
}
}
它的主要形式
private void DGV_sourcefolder_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (DGV_sourcefolder.Columns[e.ColumnIndex].Name == "Edit")
{
string y = "";
int i;
i = ((DataGridView)sender).SelectedCells[0].RowIndex;
y = ((DataGridView)sender).Rows[i].Cells[1].Value.ToString();
//MessageBox.Show(y.ToString());
DTO.data = y;
var row = ((DataGridView)sender).Rows[i];
Form2 form = new Form2(row);
form.Show();
Hide();
}
}
答案 1 :(得分:0)
不假设数据网格中的数据,您可以使用DataGridViewCell的ParseFormattedValue方法和FormatedValue属性来使form2中的文本框的行为与数据网格中的文本框一样。如果您不在数据网格中使用字符串作为值类型,这将有所帮助。
public Form2
{
TextBox _myTextBox;
public Form2()
{ ... }
public DataGridViewCell CurrentCell {get;set;}
protected override void OnLoad()
{
Assert(CurrentCell != null);
_myTextBox = CurrentCell.FormatedValue;
}
public SubmitBtn_clicked(...)
{
try
{
var cellValue = CurrentCell.ParseFormattedValue(_myTextBox.Text,
CurrentCell.Style, (TypeConverter)null, (TypeConverter)null);
CurrentCell.Value = cellValue;
}
catch(FormatException)
{/*user entered value that cant be parsed*/ }
catch(ArgumentException)
{/*_myTextBox.Text was null or cell's FormattedValueType is not string*/}
}
}