Visual Studio
Microsoftが開発している統合開発環境
インストール
第1回 Visual Studio 2015って何ができるの?:連載:簡単! Visual Studio 2015入門(1/6 ページ) - @IT
https://atmarkit.itmedia.co.jp/ait/articles/1508/07/news031.html
解説通りにC#でウインドウズアプリケーションを作成すると、
C:\Users\refirio\Documents\Visual Studio 2015\Projects\WindowsFormsApplication1\
にプロジェクトが、
C:\Users\refirio\Documents\Visual Studio 2015\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\WindowsFormsApplication1.exe
に実行ファイルが作成された
※Unityを使う際に Visual Studio 2015 をインストール済みだった
日本語化は行っていなかったので Visual Studio 2015 Language Pack をインストール
■2024/06/22に Visual Studio 2022 で新規に開発環境を作成
https://visualstudio.microsoft.com/ja/ からVisual Studioをダウンロードした
ダウンロードした VisualStudioSetup.exe を実行してインストール
インストールの際、「.NETデスクトップ開発」を選択した。さらに「C++によるデスクトップ開発」を選択し、右の一覧から「最新のv142ビルドツール用C++MFC」を選択した
初回起動後にサインインを行った
「表示 → ツールボックス」でツールボックスを表示し、固定表示にした
さらに「表示 → プロパティウインドウ」でプロパティを表示した
■2021/01/03に Visual Studio 2019 で新規に開発環境を作成
https://visualstudio.microsoft.com/ja/downloads/ からVisual Studio 2019の「コミュニティ」をダウンロードした
ダウンロードした vs_community__1846245101.1607761859.exe を実行してインストール
インストールの際、「.NETデスクトップ開発」を選択した。さらに「C++によるデスクトップ開発」を選択し、右の一覧から「最新のv142ビルドツール用C++MFC」を選択した
初回起動後にサインインを行った
Visual Studio 2019でMFCアプリのプロジェクトを作成する : MIBC備忘録
http://mibc.blog.fc2.com/blog-entry-186.html
■2016/06/30に Visual Studio 2017 で新規に開発環境を作成
https://www.visualstudio.com/ja/downloads/ からVisual Studio Communityをダウンロードした
ダウンロードした vs_community__476664055.1498735138.exe を実行してインストール
インストールの際、「.NETデスクトップ開発」を選択した
初起動時は使えるようになるまでとても時間がかかった
…と思ったが、サインインのウインドウが後ろ側に表示されていることに気付かなかっただけだった
インストール後は以下が参考になりそう
急にWindowsでプログラムを書くことになった人向けのクイックスタートガイド - Qiita
https://qiita.com/cafeaulait/items/4f1387796590c633f346
C#でウインドウズアプリケーションを作成
初期画面で「新しいプロジェクトの作成」をクリック、
もしくはメニューから「ファイル → 新規作成 → プロジェクト」を選択し、
「新しいプロジェクトの作成」画面を開く
「C#」「Windows」「デスクトップ」で絞り込み → 「Windows フォームアプリケーション (.NET Framework)」を選択
以下初期状態のまま「作成」ボタンをクリック
プロジェクト名: WindowsFormsApp1
場所: C:\Users\refirio\source\repos
ソリューション名: WindowsFormsApp1
フレームワーク: .NET Framework 4.7.2
プロジェクトが作成されるので、しばらく待つ
プロジェクトのファイルは以下に作成された
C:\Users\refirio\source\repos\WindowsFormsApp1
プロジェクト作成直後は、以下の内容はカラだった
C:\Users\refirio\source\repos\WindowsFormsApp1\WindowsFormsApp1\bin\Debug
メニューから「ビルド → ソリューションのビルド」を実行すると、上記 Debug フォルダ内にファイルが作成される
メニューから「デバッグ → デバッグなしで開始」を実行すると、プログラムが実行される
もしくは Debug フォルダ内に作成された、WindowsFormsApp1.exe をダブルクリックで実行することでもプログラムを実行できる
この WindowsFormsApp1.exe を他の環境に渡すことで、同じプログラムを実行できる
■プロジェクトの作成場所
2021/09/16に Visual Studio 2019 で試すと、初期状態では
C:\Users\refirio\source\repos\WindowsFormsApp1
にプロジェクトが、
C:\Users\refirio\source\repos\WindowsFormsApp1\WindowsFormsApp1\bin\Debug
に実行ファイルが作成された
2021/01/03に Visual Studio 2019 で試すと、初期状態では
C:\Users\refirio\VisualStudio\WindowsFormsApp1
にプロジェクトが、
C:\Users\refirio\VisualStudio\WindowsFormsApp1\WindowsFormsApp1\bin\Debug
に実行ファイルが作成された
2016/06/30に Visual Studio 2017 で試すと、初期状態では
C:\Users\refirio\Documents\Visual Studio 2017\Projects\WindowsFormsApp1
にプロジェクトが、
C:\Users\refirio\Documents\Visual Studio 2017\Projects\WindowsFormsApp1\WindowsFormsApp1\bin\Debug
に実行ファイルが作成された
■Gitでのソースコード管理
プロジェクトを開くと、画面右下に「ソース管理に追加」が表示されている
これをクリックし、さらに表示された「Git」をクリックすると、「Gitリポジトリの作成」ウインドウが表示される
リモートリポジトリとしてGitHubのアカウントが表示される
必要に応じて内容を変更して「作成とプッシュ」をクリックすると、GitHubにリポジトリが作成&プログラムがプッシュされる
完了すると、WindowsFormsApp1 フォルダ内に「.git」「.gitattributes」「.gitignore」が作成される
WindowsFormsApp1 をSourcetreeなどで開くと、作業履歴も確認できる。初期状態では以下2件の履歴が作成されていた
2021年9月16日 13:47:20 プロジェクト ファイルを追加します。
2021年9月16日 13:47:19 .gitignore および .gitattributes を追加します。
Visual Studio 2019 のGit連携機能でGitHubを使うメモ - zoe log
https://zoe6120.com/2020/10/21/1592/
■プログラムの調整と動作確認
画面左の「ツールボックス」をクリック
「コモンコントロール → ラベル」をフォーム画面にドラッグ&ドロップ
ラベルが配置されるので、ドラッグ&ドロップで位置を調整
画面右下の「プロパティ」で「Text」を「ハローワールド!」に変更する
これで再度ビルド&実行すると、ウインドウに「ハローワールド!」と表示されていることが確認できる
■デバッグ
以下のようにすればデバッグメッセージを表示できる
System.Diagnostics.Trace.WriteLine("メッセージ");
WebView2
WebView2 で自分好みのブラウザを作る #MicrosoftEdge - Qiita
https://qiita.com/so_nkbys/items/a03242f5089a2c2c8a66
VisualBasic2022でWebBrowserを使いたいのですが、ツール... - Yahoo!知恵袋
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14255197239
Visual Studio 2022では、「WebBrowser」が廃止されている
代わりに「WebView2」を使うことになるが、パッケージは自分で追加する必要がある
ツール → NuGetパッケージマネージャー → ソリューションのNuGetパッケージの管理
新しく「NuGet - ソリューション」タブが開かれる
「参照」をクリックし、「WebView2」と入力して検索する
一覧から「Microsoft.Web.WebView2」を選択し、右のウインドウで「Gadget」にチェックを入れて「インストール」をクリックする
この状態でフォームのデザインビューに戻ると、ツールボックスに「WebView2」が追加されている
「WebView2」をデザインビューにドラッグ&ドロップし、「(Name)」を「myWebView」に、「Dock」を「Fill」にする
以下のコードを記述する
private void Form1_Load(object sender, EventArgs e)
{
myWebView.Source = new Uri("https://www.google.co.jp/");
}
C#でウインドウズアプリケーション(ガジェット)を作成
ツールボックスからWebBrowserを配置し、Form1_Load()内で以下を実行する
webBrowser1.Navigate("http://refirio.org/");
NotifyIconを配置し、アイコンを設定する
クリック時のイベントを設定する…という作業は無しにするか
後述の「タスクバーに表示しない」も参照
【C# WebBrowser】ブラウザを作成する | ITLAB51.COM
http://www.itlab51.com/?p=3747
タスクトレイにアイコンを表示する: .NET Tips: C#, VB.NET
https://dobon.net/vb/dotnet/control/showtasktrayicon.html
イベントを捕捉する: .NET Tips: C#, VB.NET
https://dobon.net/vb/dotnet/beginner/eventhandle.html
最小化されたフォームを元(通常か最大化状態)に戻す: .NET Tips: C#, VB.NET
http://dobon.net/vb/dotnet/form/restoreminform.html
C# - フォームを常に最前面に表示する
http://jeanne.wankuma.com/tips/csharp/form/topmost.html
C# - フォームをタスクバーに表示しない
http://jeanne.wankuma.com/tips/csharp/form/showintaskbar.html
■タスクバーに表示しない
以下のように指定すると表示されないはずだが、環境によってはおかしなフォームが表示される?
気付いていないだけで、Surfaceでも表示されていた?
this.ShowInTaskbar = false;
以下のようにすればガジェット風になるので、タスクトレイを考えずにこの形式にすればいいかも
this.MinimizeBox = false;
this.MaximizeBox = false;
this.ShowInTaskbar = false;
■ウインドウ位置を保存
「ソリューションエクスプローラー」でプロジェクト名を右クリックして「プロパティ」を選択
「設定」を選択し、一例だが以下のように設定
名前: WindowLocation
種類: System.Drawing.Point
スコープ: ユーザー
値: 200, 100
デザインで対象フォームを選択し、プロパティウインドウで「イベント」を選択
「FormClosing」をダブルクリックするとコードが挿入される
もとからあるウインドウ読み込み処理とあわせて、以下のようにプログラムを記述する
private void Form1_Load(object sender, EventArgs e)
{
// ウィンドウ位置を復元する
this.Location = Properties.Settings.Default.WindowLocation;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
// ウィンドウ位置を保存する
Properties.Settings.Default.WindowLocation = this.Location;
Properties.Settings.Default.Save();
}
C#: ウィンドウの位置・サイズ・最大化状態を保存する
http://qiita.com/nicklegr/items/faefb804697a395b148d
【ワレコのC#】Formアプリ 前回終了時 ウインドウ位置・サイズを記憶復元
https://www.wareko.jp/blog/c-sharp-form-application-save-restore-window-state-position-size
C#メモ ×ボタンがクリックされたことを検知してみる
http://www.tetsuyanbo.net/tetsuyanblog/23478
■スタートアップ
以下にショートカットを作成しておく
C:\Users\(ユーザ名)\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Tech TIPS:Windows 10で「スタートアップ」にプログラムを登録する
http://www.atmarkit.co.jp/ait/articles/1701/18/news029.html
「Windows 10」のスタートアップの場所及びアプリを設定する手順について
https://www.japan-secure.com/entry/how_to_set_the_start-up_of_windows_10.html
CSV
※メモ
Encoding.GetEncoding("Shift_JIS") を指定するには、あらかじめ Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); の指定が必要だった
引き続き詳細を確認したい
using Csv;
using System.Data;
using System.Text;
namespace CSVEditor
{
public partial class Form1 : Form
{
DataTable dataTable = new DataTable();
public Form1()
{
InitializeComponent();
// Shift-JISなどのエンコーディングをサポートするプロバイダーを登録
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
}
private void buttonReadFile_Click(object sender, EventArgs e)
{
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
textInputFileName.Text = openFileDialog.FileName;
// Shift-JISでファイルを読み込む
string csv = File.ReadAllText(openFileDialog.FileName, Encoding.GetEncoding("Shift_JIS"));
dataTable.TableName = "CSVTable";
dataTable.Columns.Clear();
dataTable.Clear();
foreach (ICsvLine line in CsvReader.ReadFromText(csv))
{
foreach (var item in line.Headers)
{
dataTable.Columns.Add(item);
}
break;
}
foreach (ICsvLine line in CsvReader.ReadFromText(csv))
{
dataTable.Rows.Add(line.Values);
}
dataGridView.DataSource = dataTable;
}
}
}
}
Cでコマンドラインアプリケーションを作成
インストーラの
vs_community_JPN.exe
を実行し、「Modify」を選択し、「Visual C++」にチェックを入れて追加インストールする
「ファイル → 新規作成 → プロジェクト → Visual C++ → Win32 Console Application」
#include <stdio.h>
int main()
{
printf("Hello, world!\n");
return 0;
}
■エラー対策
「デバッグ → デバッグなしで開始」で実行できるが、stdafx.h が無いと言われてしまう
「プロジェクト → ◯◯のプロパティ → C/C++ → Precompiled Headers」で「Precompiled Headers」を「Not Using Precompiled Headers」にする
sscanfなどを使おうとすると危険だと言われる
ソースコードの最初に以下の記述を追加すれば無視できる
#define _CRT_SECURE_NO_WARNINGS 1