Hello there,
I can probably answer most of your questions:
1. I use Visual Studio. As for your secondary question inside this one, you do not need to have any replacement for Drag & Drop. In fact, you don't need to use that... at all. I know that JAWS and NVDA automatically read controls within the GUI designer, and the toolbox is readily accessible and usable. I'd say that everything is accessible and/or usable, accessibility-wise. The only difficulty with the GUI designer is the placement of widgets (or controls). When you place a control on the form that you are building, it is placed at the center of the form (I think?). Any other controls you add will be on top of that first control, making it impossible for sited people to use the program. I know that in the GUI designer the arrow keys move controls around, but neither JAWS or NVDA speaks the coordinates or the position it's at.
2. This question was basically answered in my first answer.
3. C# can be compiled to both a DLL and an executable. Beware, however, that unless you get a program such as Dotfiscator, your programs will be easily decompiled into MSIL. From there, it's not that hard to get back the original source code, or a reasonable imitation of it.
4. It's quite hard to compare C# to Python and vice versa. The languages are extremely different, but the most major comparison is the fact that C# is primarily meant for Windows only (as evidenced from all of the Windows.* namespaces and no Mac.* or Linux.*, etc... namespaces), although that is changing with .NET Core, and Python was meant, from the start, as a cross-platform, interpreted language.
Some other easily detectable comparisons are:
A. C# uses a standardized C/C++/Java syntax, i.e.:
for (int i = 0; i <= 100; ++i) {
// what to do with i...
}
Rather than the indention-based syntax like Python uses:
for i in range (0, 101):
# Do something with i...
2. C# has several new concepts that Python does not: namespaces, assemblies, assembly references, and the ability to be JIT-compiled.
3. C# has different keywords than Python. Python has the False, class, finally, is, return, None, continue, for, lambda, try, True, def, from, nonlocal, while, and, del, global, not, with, as, elif, if, or, yield, assert, else, import, pass, break, except, in, and raise reserved keywords; while C# has the abstract, as, base, bool, break, byte, case, catch, char, checked, class, const, continue, decimal, default, delegate, do, double, else, enum, event, explicit, extern, false, finally, fixed, float, for, foreach, goto, if, implicit, in, int, interface, internal, is, lock, long, namespace, new, null, object, operator, out, override, params, private, protected, public, readonly, ref, return, sbyte, sealed, short, sizeof, stackalloc, static, string, struct, switch, this, throw, true, try, typeof, uint, ulong, unchecked, unsafe, ushort, using, virtual, void, volatile, and while reserved keywords (section 2.3.1 in Pythons language specification and section 2.4.3 in C#'s language specification).
4. Python has reserved classes of identifiers (_*, __*__, and __*); C# does not (section 2.3.2 of Pythons language specification).
I could probably come up with more, however I will not. These are probably the most trivial of comparisons, anyways. Note that when I refer to sections of either of these languages language specifications, I am referring to the latest versions of them, not, say, Python 2.7 or 3.2, or C# 3.0 or 2.0.
"On two occasions I have been asked [by members of Parliament!]: 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out ?' I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question." — Charles Babbage.
My Github