投稿者 魔界の仮面弁士  (社会人) 投稿日時 2023/8/8 09:53:27
あと、MSFlexGrid からの移植時に考慮するべきは編集機能。

MSHFlexGrid や MSFlexGrid は編集機能を持たないため、VB6 時代には、
グリッド上に別の TextBox などを重ね合わせて、疑似編集機能を実装することが
しばしば行われてきました。(MSFlexGrid ではなく VSFlexGrid なら編集できるのですが)

たとえば下記は、同名の「abc」さんが FlexGrid について質問されているものですが、
MSFlexGrid には編集機能が無いので、TextBox を重ねて編集機能を作りこんでいます。
https://rucio.cloudapp.net/ThreadDetail.aspx?ThreadId=159


しかし DataGridView の場合は、標準で編集機能を持ち合わせているため、
それらのコードを移植する場合、全面的に書き換えが必要になってきます。
入力チェックのイベントとかも変わってきますしね。

それで単純なテキストボックスやドロップダウンリストとかであれば、さほど難しくは無いのですが、
DataGridView の標準の編集機能では再現できない場合にどうするのか。

たとえば VB6 で、TextBox ではなく MaskedTextBox や DTPicker を重ねていたような場合、
それを DataGridView で表現する場合は、上にコントロールを重ねる方式ではなく、
IDataGridViewEditionControl インターフェイスを継承した編集用コントールを
用意するのが正攻法です。

[DataGridViewでDateTimePickerを使って日付編集を行う]
http://www.ria-lab.com/archives/508

[How to: Windows フォーム DataGridView Cells でコントロールをホストする]
https://learn.microsoft.com/ja-jp/dotnet/desktop/winforms/controls/how-to-host-controls-in-windows-forms-datagridview-cells