WPF 获取datagrid某一行某一列的textbox
时间: 2023-09-12 15:11:48 浏览: 171
您好,对于您的问题,可以使用以下代码获取DataGrid控件中某一行某一列处的TextBox控件:
```
DataGridRow row = dataGrid.ItemContainerGenerator.ContainerFromIndex(rowIndex) as DataGridRow;
TextBox textBox = dataGrid.Columns[columnIndex].GetCellContent(row).FindName("textBoxName") as TextBox;
```
其中,rowIndex代表要获取的行号,columnIndex代表要获取的列号,textBoxName代表要获取的TextBox控件的名称。
希望能帮到您!如果还有其他问题,请随时提出。
相关问题
WPF datagrid获取下一列里面的textbox
可以通过以下代码获取 WPF datagrid 下一列中某个 cell 的 textbox:
```
var nextColumnIndex = DataGridCellInfo.Column.DisplayIndex + 1;
if (nextColumnIndex < DataGrid.Columns.Count)
{
var nextColumn = DataGrid.Columns[nextColumnIndex];
var nextCell = new DataGridCellInfo(DataGrid.Items[DataGridCellInfo.Item], nextColumn);
var nextTextBox = FindVisualChild<TextBox>(nextCell);
}
```
其中,FindVisualChild 是一个辅助方法,用于在控件树中查找指定类型的子控件。
WPF datagrid寻找下一列里面的textbox
可以使用VisualTreeHelper类的FindVisualChild方法找到DataGridRow中的Textbox,再获取下一列的Textbox。以下是示例代码:
```
public static T FindVisualChild<T>(DependencyObject parent) where T : DependencyObject
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
{
var child = VisualTreeHelper.GetChild(parent, i);
if (child != null && child is T)
{
return (T)child;
}
else
{
var result = FindVisualChild<T>(child);
if (result != null)
return result;
}
}
return null;
}
private void GetNextTextBox()
{
var row = dataGrid.ItemContainerGenerator.ContainerFromIndex(dataGrid.SelectedIndex) as DataGridRow;
if (row != null)
{
// 获取当前选中单元格的列索引
var columnIndex = dataGrid.CurrentColumn.DisplayIndex;
// 获取下一列的Textbox
var nextTextBox = FindVisualChild<TextBox>(row)
.Where(tb => Grid.GetColumn(tb) == columnIndex + 1)
.FirstOrDefault();
if (nextTextBox != null)
{
nextTextBox.Focus();
}
}
}
```
当然以上代码只是示例,需要根据具体情况进行修改。
阅读全文