Creating windows form app (.NET framework) on Mac - c#

Im doing work in collage with coding windows form apps. I'm doing it in C# although i don't think that impacts the problem I have.
When at home I wish to continue this coding but I can't as I have a macbook book.
My question is, is there any simple way to be able to code windows form app on a mac book. So far i have not been able to find a way to do this. Is there a way or do i have to save up and buy a laptop and run Windows on it.
Thanks
Scott

There's no way to develop for Windows Forms on a platform other that Windows itself. You might use other tech stacks or cross platform toolkits like GTK+ or Eto which can translate the designer code and create Windows Forms applications, but native Windows Forms development is not available due to a huge count of Windows-exclusive PInvokes. No chance here.
However, you don't need to have a Windows laptop to code on a mac - you always have the option to use virtualized desktops where the Windows system runs as a so called "image". Some are free and just require you to put in a Windows installation disk (or disk image) - so you run the installation in that virtualized system and can boot it shutdown it whenever you like. It is literally like having a computer in a computer. There are a lot of virtualization tools like VMWare Player or Oracles VirtualBox. On Mac, Parallels Desktop is very popular. It can integrate virtualized Windows applications to MacOS without having that virtualized image as "box" you connect to. The virtualized windows integrate quite seamlessly into the Mac desktop and support window management commands like App Exposé and Mission Control.
Another great options is to create an account on Microsoft Azure where you can rent virtual Windows systems online to a very low price. The benefit is, that those systems run in the clould and can be accessed from everywhere you'll ever go (as long as you have an internet connection).

Related

Difference between blank universal windows app and console app

I have seen this excellent post SO.
As most do, I began a new simple project that has no UI requirement. I noticed the Blank App ( Universal Windows ) option. What is the difference between that and a Console app?
I need an executable that will do some coverting of tiff to pdf type work on a every so often basis. ( every 30 minutes )
I also do not want a service, as in this case there is no need for it to constantly run
Universal Windows Blank app refers to Universal Windows Platform (UWP).
It uses a subset of .Net Framework, also has some parts that aren't in .Net Framework (thanks to #DavidJ comment) and has some other app behaviour limitations. It's used for apps running on wide range of devices like Windows PC, Windows phones, Xbox and other Microsoft products.
Look at particular quote:
Windows 10 makes it easier to develop apps for the UWP with just one API set, one app package, and one store to reach all Windows 10 devices – PC, tablet, phone, Xbox, HoloLens, Surface Hub and more.
So there's no need to use it just for Windows_PC_only console application.
More links:
https://en.wikipedia.org/wiki/Universal_Windows_Platform
https://msdn.microsoft.com/en-us/windows/uwp/get-started/whats-a-uwp

Is it possible to write an application that runs on Windows Mobile 6.5 as well as Windows Embedded 8.1/10 Handheld?

A customer needs an application running on an industry handheld device with barcode scanner.
Unfortunately, Windows 8.1 Embedded Handheld devices are rare, and Windows 10 Embedded devices are non-existent. Almost all devices currently available use Windows CE 6 or Windows Mobile 6.5.
As far as I know, (.NET) applications for Windows Mobile 6.5 are exclusively based on Compact Framework and WinForms, whereas Windows 8.1 Embedded software is (exclusively?) based on WinRT and XAML.
Is that correct? Is there no way to write a (.NET) application which
runs on current (Windows Mobile 6.5) devices and
will run Windows 8.1/10 Embedded devices?
You are right, there is no way to do that. The UI is based on winforms for 6.5 and XAML for 8/10.
The only thing you can try to do is to try to keep UI and business logic cleanly separated to simplify the migration.
Consider also that some features you had on 6.5 (ex: sql compact) have been dropped in 8/10 and the "replacement" may not be code-compatible and may lack some features.
You may try to build and test your non-UI code already on 8/10, so you can check that you are not using features that may impact your migration.
If you don't have to write native .NET-code, you should be able to use Rho Elements. Possibly there are other cross platform solutions that work as well.
Possibly you can go with Windows.Forms on Windows Mobile 6.5 and Xamarin on Windows Phone. You need to use a compatibilty layer for the Form code of Compact Framework and the one supported by Xamarin.
But I would recommend to go with HTML5 (use ZetaKey browser on Windows Mobile). Even RhoElements is based on HTML5 but with properietary extensions.
Yes, it is possible. You will have to implement all GUI logic platform dependent. And can share code using MVVM pattern. You may also need to switch to a database, that is available on both platforms like SQLite.

can my windows phone application auto start?

Is there a way for my application to auto-start after some time instead of a notification? Or am I constrained to just notifications?
The difference between Android and Windows Phone (you mentioned Android in your comment) is that Android allows you to do pretty much everything while Windows Phone is a very restricted system. So, unfortunately, the answer is no. (There are ways to launch your app from other places than the app's tile, though. See the end of the answer)
Why am I saying unfortunately? Of course, Windows Phone is a nice and seek operating system that runs wonderful even on low-spec devices like the Lumia 520. But that doesn't mean developers shouldn't get the freedom to interact with the Operating System and do innovative tasks.
But there are reasons Microsoft chose not to allow Autostart (or at least, restrict the area an app can access, not the autostart in particular):
it may irritate customers. Even if you show a message box, many customers just dismiss it without reading it and they wouldn't understand why an app would appear without their interaction
each feature would make the operating system slower and bigger. I don't want to say that an autostart makes the phone unusable, but here's a question: Do you need to run a registry cleaner on you PC from time to time? Yes, you do need to do so You even need to reinstall a PC form time to time. You don't need to do that on a Windows Phone. It just works and will always work (OK, that's maybe a bit too optimistic, but you get it...)
I also don't think an autostart is particularly useful on a mobile. Because each app runs full screen, the system would boot up to your app instead of to the start screen. I don't think the user will always want your app (most of the time, he'll want to look at his start screen or launch another app), so it would just be annoying. On a PC, you can use the auto start for small programs that should run in the background (for example, I've got a progamm that provides Git with my SSH keys that automatically starts up each time).
But as I mentioned above, there are other ways to launch your app. Using url schemes can be surprisingly powerful as you can put a button on a web page that will directly launch your app. Other apps will also be able to launch your app. But as it is not directly what you wanted to know, I won't explain it in detail and instead provide you wiht a gread link to msdn: Auto-launching apps using file and URI associations for Windows Phone 8
For such features you should look into: Windows Embedded 8.1 Handheld instead of the consumer version Windows Phone 8.1.

Full screen WPF App To act as operating system

I realize this might sound a little dubious but I assure you it isn't. I have a client who wants a win 8 pro touch screen app. One of the requirements is that the app is the only thing on the device the user may use. So my question is, can I make it so that the user cannot exit my wpf application? I have it running full screen without toolbars but they could still click on start etc. I essentially want it to run on windows but kind of be its own OS. Any advice is appreciated. Also if this is something that can be handled in group policies or some other way I would love to have that advice as well. Thank you.
You'll need to set Windows 8.1 to run in "Kiosk" mode.
How to enable Kiosk mode in Windows 8.1
The only caveat, is that the app must be a Windows modern app, not WPF.
Windows 8.1 comes with an excellent feature where you can lockdown the
device allowing the user to use only one application. You need to keep
in mind that this application needs to be a modern application and
cannot be a desktop application. So, if you are going to use it for
your customized company application (For e.g. ATMs, Flight Schedule),
the application should be a modern application
There is a product called "Secure Lockdown" from Inteset http://shop.inteset.com/lock-down-windows-7-with-inteset-secure-lockdown that looks like it can be used with a WPF app. I've not used it (yet), but it looks like it should work for your scenario. It's not free, but it reasonably priced at around $20. It says it is compatible with Windows 8 as well.

3D Screensaver interfering with WPF application (Windows XP)

I have a fairly large application that uses WPF for its user interface. I recently found an unusual defect regarding 3D screensavers. The 3D screensavers 3D FlowerBox,3D Flying Objects,3D Pipes,3D Text causes 1 of my WPF windows to disappear when the screensaver activates. Other screensavers are fine.
My application only encounters this problem on Windows XP.
I have some experience with DirectX. When a 3D screensavers activates, the d3d device context will be switched to exclusive mode. I reckon that WPF has trouble restoring the device context when the device switches back to cooperative mode (hence why its only affecting windows XP)
Has anyone seen such a scenario occur before ? Is there a remedy for the problem ?
Windows XP SP3, DirectX 9.0c, .NET 3.5
Not that exact one, but I have definitely seen strange problems with WPF and Windows XP, especially. The easy thing to say would be that you should try to move to Windows 7 ASAP, but then I would just be a jerk.
First off, check your video device driver. We've had a lot of problems with WPF on XP when an old graphics cards' device drivers are used. Update it to the latest version. That could take care of it.
If that doesn't work, and if you can, try swapping the video card for a different brand. That, too may work (though highly undesirable).
Third -- is your window semi-transparent or non-rectangular? If you switch your WPF app to be a regular, rectangular, boring, ugly Windows XP window, we've found that a lot of these quirks went away when we stopped getting fancy with our main windows. My guess is that it has something to do with the fact that XP has no desktop window manager. But then again I don't really know.
I know this is all very unsatisfying. We've had stuff like this happen to us on XP. I'm praying for our IT department to be able to move us to 7 this year...

Categories