Оказалось, что порывшись в документации можно найти много интересного и "сделать всё красиво". Как бонус: получаем возможность задать тип геометрии (point, polyline, polygon) для feature class на этапе выбора в окне.
public static IFeatureClass OpenArcGisFeatureClassFromDialog(int hwnd, string dialogTitle, esriGeometryType possibleInputFeatureClassGeometry)
{
IFeatureClass result = null;
IGxDialog gxDialog = new GxDialog();
IEnumGxObject gxEnum;
switch (possibleInputFeatureClassGeometry)
{
case esriGeometryType.esriGeometryPoint:
gxDialog.ObjectFilter = new GxFilterPointFeatureClasses();
break;
case esriGeometryType.esriGeometryPolyline:
gxDialog.ObjectFilter = new GxFilterPolylineFeatureClasses();
break;
case esriGeometryType.esriGeometryPolygon:
gxDialog.ObjectFilter = new GxFilterPolygonFeatureClasses();
break;
default:
gxDialog.ObjectFilter = new GxFilterFeatureClasses();
break;
}
gxDialog.AllowMultiSelect = false;
gxDialog.Title = dialogTitle;
if (gxDialog.DoModalOpen(hwnd, out gxEnum) && gxEnum != null)
{
IGxObject gxObject = gxEnum.Next();
if (gxObject is IGxDataset)
{
IGxDataset gxDataset = (IGxDataset) gxObject;
if (gxDataset.Dataset is IFeatureClass)
result = (IFeatureClass)gxDataset.Dataset;
}
}
gxDialog.InternalCatalog.Close();
Marshal.FinalReleaseComObject(gxDialog);
return result;
}