DataGridViewで TimeSpan をカスタマイズする方法について、DataGridView 列の Format TimeSpanに従って、IFormatProvider と ICustomFormatter がどのように機能するかを理解しようとしています。フォーマットに関係なく、常に「foo」を返す完全にカスタムのフォーマッタを作成しました。
私は Int で使用していますが、渡される値をチェックせず、 を返すだけなので、すべての型で機能するはずだと思います"foo"
。
class MyFormatter : IFormatProvider, ICustomFormatter
{
public object GetFormat(Type formatType)
{
Console.WriteLine("GetFormat");
return this;
}
public string Format(string format, object arg, IFormatProvider formatProvider)
{
Console.WriteLine("Format");
return "foo";
}
}
そして、私はそれをに渡していint.ToString()
ます:
int number = 10;
Console.WriteLine(number.ToString(new MyFormatter()));
私が得ているものは次のとおりです。
GetFormat 10
私が得たいと思っていたのは次のとおりです。
GetFormat フォーマット ふー
編集: DateTime のカスタム IFormatProvider を作成して使用する方法を見つけましたか? そして、そこの答えは、 orDateTime.ToString()
以外は何も受け入れないと言い、オブジェクトが実装されていても、これらのタイプでない場合、オブジェクトは拒否されます- https://stackoverflow.com/a/2382481/492336。DateTimeFormatInfo
CultureInfo
ICustomFormatter
ToString()
だから私の質問は、メソッドのすべてのケースでそれが当てはまるのですか? それは DataGridView にも当てはまりますか? また、どのような場合に真のカスタム フォーマッタを渡すことができますか?