2

MMS メッセージのリストを表示する DataGridView があります。送信と受信を区別するために、列に右矢印と左矢印を入れました。私たちの顧客はそれを気に入っていましたが、特に国際的な環境では、より明確にするために右矢印を緑色にしたいと考えています。

私は右矢印を取り、それを Visual Studio 2003 で開きました (アプリケーションの作成に VS2010 を使用しています)。アイコンの色を変更したところ見栄えがよくなりましたが、含まれているコントロールを表示しようとすると、次のエラーが発生します。

DataGridView で次の例外が発生しました:

System.ArgumentException: パラメーターが無効です。 System.Drawing.Image.FromStream (ストリーム ストリーム、ブール値の useEmbeddedColorManagement、ブール値の validateImageData) で System.Drawing.ImageConverter.convertFrom (ITypeDescriptorContext コンテキスト、CultureInfo カルチャ、オブジェクト値) で System.Windows.Forms.Formatter.FormatObjectInternal (オブジェクト値、 System.Windows.Forms.DataGridViewCell.GetFormattedValue(オブジェクト値、Int32 rowIndex、DataGridViewCellStyle& cellStyle、TypeConverter valueTypeConverter、TypeConverterformattedValueTypeConverter、DataGridViewDataErrorContexts コンテキスト)

このデフォルト ダイアログを置き換えるには、DataError イベントを処理してください。

データを入力する DataTable を作成するときは、アイコンを持つ列でこれを使用します

dt.Columns.Add(sDirection);
dt.Columns[sDirection].DataType = typeof(Byte[]);

行にデータを追加すると、アイコンを変換するメソッドができます。

internal static Byte[] ConvertIconToByteArray(Icon pIcon) {
        MemoryStream ms = new MemoryStream();
        pIcon.Save(ms);
        return (ms.GetBuffer());
}

そして、DataTableをDataGridViewに追加します

grdMMSList.DataSource = dt.DefaultView;

(わかりやすくするために、上記のコードからメソッド呼び出しを削除しました)

私はデバッガーでフォロースルーし、DefaultView を DataSource として設定すると、エラーがスローされます。例外を確認できるように try/catch ブロックに配置しようとしましたが、catch はトリガーされません。

他のいくつかの情報: - アイコンはリソースとして保存され、Properties.Resources.RightArrow によって呼び出されます - 色を変更した後、ファイルを VS2003 に保存します。ファイルはまだどこでもアイコンとして表示されます。- VS2010 では、リソース ファイルに新しい配色があり、適切にレンダリングされます。

あなたが提供できる助けを前もって感謝します。

4

1 に答える 1

1

私はこの方法で画像を編集しません。への追加がすべてサポートされている有効な矢印のセットが必要な場合はDataGridView、ディレクトリに

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\VS2010ImageLibrary\1033

ここに .zip ファイルがあります。解凍します。

次に、多数の MS アイコンや画像などを含むさまざまなサブディレクトリが見つかります。

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\VS2010ImageLibrary\1033
    \VS2010ImageLibrary\VS2010ImageLibrary\Objects\png_format\WinVista

ここでは、すべての異なる色のすべての異なる種類の矢印を見つけることができます。私のアドバイスは、既存のファイルに対するビットマップ編集ではなく、これらを使用することです。

これが役立つことを願っています。

于 2012-05-04T16:23:38.237 に答える