フォームのForm.Iconプロパティを設定すると、フォームのタイトルバーの左(コントロールボックス)に表示されるアイコンと、タスクバーに表示されるアイコンを変更することができます。
Visual StudioのフォームデザイナでIconプロパティを設定する場合は、あらかじめアイコンのICOファイルを用意しておき、プロパティウィンドウでフォームのIconプロパティにそのICOファイルを設定します。(この時、アイコンはフォームのリソースに自動的に追加されます。)
自分でコードを書いてIconプロパティを設定する場合は、あらかじめ用意しておいたICOファイルを読み込んでIconオブジェクトを作成するか、アイコンをリソースとしてプロジェクトに追加しておくかします(通常は、リソースとした方が良いでしょう)。リソースについては、「Visual Studioでリソースを管理する」で詳しく説明しています。
以下の例では、ICOファイルで用意したアイコン(C:\test\1.ico)をフォーム(自分自身)のIconプロパティに設定しています。
'フォームのアイコンを設定する Me.Icon = New System.Drawing.Icon("C:\test\1.ico")
//フォームのアイコンを設定する this.Icon = new System.Drawing.Icon(@"C:\test\1.ico");
フォームのForm.ShowIconプロパティがFalseの時は、コントロールボックスが表示されず、タスクバーに表示されるアイコンもForm.Iconプロパティとは違ったものになります。ShowIconプロパティは、デフォルトでTrueです。このプロパティは、.NET Framework 2.0で追加されました。
また、ShowIconプロパティがTrueであったとしても、フォームのForm.FormBorderStyleプロパティがFixedDialogの時は、やはりコントロールボックスが表示されず、タスクバーに表示されるアイコンもForm.Iconプロパティとは違ったものになります。
補足:ShowIconプロパティがFalse、またはFormBorderStyleプロパティがFixedDialogの時にタスクバーに表示されるアイコンは、私が試した限りでは、Windows XPの時は、「アプリケーションのアイコンを変更する」で紹介している方法で設定されたアプリケーションのアイコン(ただしVisual Studioで実行している時は、既定のアイコン)になりました。Windows 8.1の場合は、アプリケーションのアイコンが変更されていたとしても、既定のアイコンになりました。
一度ですべてのフォームのアイコンを変更する方法は用意されていません。よって、自分で一つ一つのフォームのアイコンを変更するか、Iconプロパティを変更したフォームクラスを基にしてすべてのフォームを作成するか、などといった方法しかありません。
しかし、裏技的な方法が、「Change Default Winform Icon Across Entire App」で紹介されています。これによると、Iconプロパティにデフォルトで使用されるアイコンがFormクラスのdefaultIconフィールドに設定されているため、これを変更すれば、デフォルトのアイコンを変更できるということです。ただしdefaultIconフィールドはプライベートですので、この値を変更するには、リフレクションを使用することになります。
この方法はプライベートなフィールドを変更するため、言うまでもありませんが、何の保証もありませんし、それなりに危険でもあります。
defaultIconフィールドを「C:\test\1.ico」に変更する例を示します。このコードを実行した後で作成されたフォームのIconプロパティは、デフォルトで「C:\test\1.ico」になります。もし一番初めに表示されるフォームにも適用されるようにするならば、エントリポイント(詳しくは、「アプリケーションのエントリポイントを自作する」)でフォームが作成される前にこのコードを記述してください。
'FormクラスのdefaultIconフィールドを変更する GetType(Form).GetField("defaultIcon", _ System.Reflection.BindingFlags.NonPublic Or _ System.Reflection.BindingFlags.Static).SetValue( _ Nothing, New System.Drawing.Icon("C:\test\1.ico"))
//FormクラスのdefaultIconフィールドを変更する typeof(Form).GetField("defaultIcon", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static).SetValue( null, new System.Drawing.Icon(@"C:\test\1.ico"));
「Change Default Winform Icon Across Entire App」にはこの他に拡張メソッドを使用した方法なども紹介されており、参考になります。