2017-07-10 31 views
0

私のコードでMouseDoubleClickイベントでこのエラーが発生します。ここWPF DataGridの行をダブルクリックしてセルの値を取得すると、NULLが返される

Error: System.NullReferenceException: 'Object reference not set to an instance of an object.'

<DataGrid x:Name="dtgTarafDovvom" Style="{StaticResource DataGridStyle1}" ItemsSource="{Binding}" MouseDoubleClick="dtgTarafAvval_MouseDoubleClick"> 
    <DataGrid.Columns> 
    <DataGridTextColumn Binding="{Binding Path=TarafeynQarardadID}" Header="کد "> 
    </DataGridTextColumn> 
</DataGrid> 

私のC#のコードは、あなたがあなたの現在の選択カウントがセルの内容を取得する前に、ゼロでないかどうかを確認することをお勧めします

private void dtgTarafAvval_MouseDoubleClick(object sender, ouseButtonEventArgs e) { 
    TarafeynQarardadDTO t = dtgTarafAvval.SelectedItem as TarafeynQarardadDTO; 
    int tarafeynID = t.TarafeynQarardadID; 
} 

答えて

0

です。あなたを助けるちょっとしたコード。

private void dtgTarafAvval_MouseDoubleClick(object sender, MouseButtonEventArgs e) 
    { 
     if(dtgTarafAvval.SelectedCells.Count > 0) 
     { 
      CellValue = GetSelectedValue(dtgTarafAvval); 
      //CellValue is a variable of type string. 

     } 
    } 

    private string GetSelectedValue(DataGrid grid) 
    { 
     DataGridCellInfo cellInfo = grid.SelectedCells[0]; 
     if (cellInfo == null) return null; 

     DataGridBoundColumn column = cellInfo.Column as DataGridBoundColumn; 
     if (column == null) return null; 

     FrameworkElement element = new FrameworkElement() { DataContext = cellInfo.Item }; 
     BindingOperations.SetBinding(element, TagProperty, column.Binding); 

     return element.Tag.ToString(); 
    } 

PS:コードの上にSelectionUnit =の作品 'FullRow'

+0

それが働きました、本当に本当にありがとう男 –

+0

あなたは大歓迎です、commuを表示してください答えを受け入れることであなたの感謝をお祈りください。 –

0

DataGridRowコンテナのMouseDoubleClickイベントを処理し、そのDataContextプロパティをキャスト:

<DataGrid x:Name="dtgTarafDovvom" Style="{StaticResource DataGridStyle1}" ItemsSource="{Binding}"> 
    <DataGrid.RowStyle> 
     <Style TargetType="DataGridRow"> 
      <EventSetter Event="MouseDoubleClick" Handler="dtgTarafDovvom_MouseDoubleClick" /> 
     </Style> 
    </DataGrid.RowStyle> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding Path=TarafeynQarardadID}" Header="کد " /> 
    </DataGrid.Columns> 
</DataGrid> 

private void dtgTarafAvval_MouseDoubleClick(object sender, ouseButtonEventArgs e) 
{ 
    DataGridRow row = sender as DataGridRow; 
    TarafeynQarardadDTO t = row.DataContext as TarafeynQarardadDTO; 
    int tarafeynID = t.TarafeynQarardadID; 
} 
+0

私はそれをテストしますが、同じエラーが発生します。System.NullReferenceException: 'オブジェクト参照がオブジェクトのインスタンスに設定されていません。' 行がnullです。 –

+0

どのコード行にありますか? – mm8

+0

int tarafeynID = t.TafeafeynQarardadID; tはnullを返すので、int tarafeynIDはnullになります –

関連する問題