I would like something that I can use as follows
var msg = new NonStaticMessageBox(); if(msg.Show('MyMessage', 'MyCaption', MessageBoxButtons.OkCancel) == DialogResult.Ok) {....}
But specifically non-static (I need to pass a reference to it around) does anyone know if/where such an object exists?
Such an object does not exist in the .net framework. You’ll need to roll your own.