I like both:
if (frm.DialogResult.HasValue && frm.DialogResult.Value)
because they're very readable. The intent of the code is obvious from how they are written. The first of those two is the best.
I would argue likewise that the constructor for the dialogue should be outside of the if statement for readability.
Programming isn't just about having the shortest code or even the fastest code. Someone has to maintain it after you are gone. Readability trumps shortening or even speeding up code. Wherever possible, it should be written so that anyone can come behind you and understand the logic behind the code with just a glance.
Yep, your two lines example is definitely shorter than my in one line!
People, _I_ am looking like crazy or _YOU_ cannot see that "f.ShowDialog() ?? false" is the shortest solution?
Damn, I'll never hire people like you.