2017-11-17 6 views
0

データバインドされたdatagridviewがあります。以下に示す列の1つは、オブジェクトのブール値にリンクされています。ブール値を取得する方法は、「c​​urResultSet.Pass」です。通常のセルで「True」または「False」と言うのではなく、「curResult.Pass」の値に応じて、その列に「Pass」アイコンまたは「Fail」アイコンを表示します。データバインドされたDataGridViewに表示された情報を変更する

アイコンへの.pngの設定方法が間違っていることはかなり確かですが、後でそれについて心配することがあります。今、私の最大の関心事は、下のコードに示すように、ブール値に基づいてDataGridViewImageViewColumnに特定のアイコンを設定する方法がわかりません。

DataGridViewImageColumn imgCol = new DataGridViewImageColumn(true); 

foreach(RunResult curResult in curResultSet) 
{ 
    bindingSource1.Add(curResult); 
} 

resultDataGridView.AutoGenerateColumns = false; 
resultDataGridView.DataSource = bindingSource1; 

imgCol.Image = Image.FromFile(imageFilePath + "NG icon.png"); 
imgCol.Icon = Icon.ExtractAssociatedIcon(imageFilePath + "OK icon.png"); 
imgCol.ValuesAreIcons = true; 

resultDataGridView.Columns.Add(imgCol); 
resultDataGridView.Columns[resultDataGridView.ColumnCount - 1].DataPropertyName = "Pass"; 
resultDataGridView.Columns[resultDataGridView.ColumnCount - 1].Name = "status"; 

誰もが "==真curResultSetは[]。パス" とき、私は私の "OK icon.pngと" ショーを持つことができますどのように任意のアイデアを持っていると持っている "NG icon.pngの" ショーとき「curResultSet []。パス== False "?ありがとう!

答えて

0

あなたは、コンバータを使用してブール値に映像ソースをバインドする必要があります。 パブリッククラスBoolToUriConverter:IValueConverter { 民間のconst文字列ファイルパス=「パス」;

public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     bool val = (bool)value ; 
     string path = (val == true) ? $"{filePath}OK icon.png" : $"{filePath}NG icon.png"; 
     return new Uri(path); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

、これはWPF `DataGrid`の正しい考え方ですが、OPはのWinForm` DataGridView`についてです画像列

<DataGrid ItemsSource="{Binding Collection1}" AutoGenerateColumns="False"> 
      <DataGrid.Columns> 
       <DataGridTextColumn Header="Field1" Binding="{Binding Field1}"></DataGridTextColumn> 
       <DataGridTextColumn Header="Field2" Binding="{Binding Field2}"></DataGridTextColumn> 
       <DataGridCheckBoxColumn Header="Field3" Binding="{Binding Field3}"></DataGridCheckBoxColumn> 
       <DataGridTemplateColumn> 
        <DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <Image Source="{Binding Field3, Converter={StaticResource boolToUriConverter}}"/> 
         </DataTemplate> 
        </DataGridTemplateColumn.CellTemplate> 
       </DataGridTemplateColumn> 
      </DataGrid.Columns> 
     </DataGrid> 
+0

に自分のブール列をバインドするためにそれを使用 - 異なる動物完全に。 – OhBeWise

関連する問題