Прежде всего, я бы потратил некоторое время на то, чтобы опробовать несколько конвертеров VB.NET в C # . Вы в основном переносите синтаксис, и нет причин делать это вручную, если вам не нужно. Конечно, вам, возможно, придется очистить то, что выходит из конвертера, но это лучше, чем ручное преобразование.
Теперь, что касается ваших вопросов:
1) имеет ли смысл делать GUI в winforms, но дорогой материал на нативном, неуправляемом C / C ++?
Пока нет. Подождите, пока вы не выполните преобразование, а затем выясните, где вы на самом деле проводите свое время. Нет причин для смешивания C / C ++ с C #, пока вы не обнаружите, что это необходимо. Вы можете обнаружить, что достаточно зайти в небезопасный C #. Даже это может быть ненужным. Возможно, вам просто нужно оптимизировать алгоритмы. Узнайте, какие у вас узкие места, и затем решите, как их исправить.
2) есть ли какие-нибудь рекомендации для хорошего кроссплатформенного оконного комплекта, подходящего для сценария, описанного выше?
Я бы наверняка заглянул в моно . Это действительно лучшее, что вы можете сделать, если собираетесь использовать C #. Когда вы переходите на Linux, в значительной степени это либо моно, либо другое переписывание на другом языке.