UltraGrid では ControlContainerEditor を使用して UltraGrid のセル内に任意のコントロールを組み込むことが可能です。ControlContainerEditor では RenderingControl および EditingControl プロパティを使用してセルの描画時に使用されるコントロールと編集時に使用されるコントロールを指定することができます。

ControlContainerEditor クラスを継承して BarcodeRenderer クラスを作成します。
コンストラクタで RenderingControl に UltraEanUpcBarcode インスタンスを設定します。また、RendererValue プロパティをオーバーライドして UltraEanUpcBarcode インスタンスのデータを取得・設定します。

class BarcodeRenderer : ControlContainerEditor
{
	private UltraEanUpcBarcode barcode;

	public BarcodeRenderer(UltraEanUpcBarcode barcode)
	{
		this.barcode = barcode;
		this.RenderingControl = barcode;
	}

	protected override object RendererValue
	{
		get
		{
			return this.barcode.Data;
		}
		set
		{
			this.barcode.Data = value.ToString();
		}
	}
}

UltraGrid の IntializeLayout イベントを実装し、UltraGrid でバーコードを表示する列の Editor プロパティに BarcodeRenderer クラスのインスタンスを割り当てます。

private void ultraGrid1_InitializeLayout(object sender, InitializeLayoutEventArgs e)
{
.....
	var barcode = new UltraEanUpcBarcode();
	barcode.CodeType = EanUpcCodeType.Ean13;
	barcode.Height = 100;

	var barcodeRenderer = new BarcodeRenderer(barcode);

	e.Layout.Bands[0].Columns["col2"].Editor = barcodeRenderer;
	e.Layout.Bands[0].Columns["col2"].Width = 200;
}

製品について

Ultimate UI for Windows Forms