0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

プログラム初心者勉強会 10回目 C# Windowsフォーム入門

Last updated at Posted at 2021-12-11

#目次
1. 前回リンク
2. 次回リンク
3. やったこと
4. 配信時の録画
5. 今回学んだこと
6. オーナードローについて
7. 多言語対応について
[8. Windows API の呼び出し](#8-Windows API の呼び出し)
9. 振り返り
10. 次回予告

#1. 前回リンク
https://qiita.com/Usyuuu-program-beginner/items/2a25123f0059bf6dd1f6

#2. 次回リンク
まだ

#3. やったこと
ずっと参考にしてたサイトの内容を最後まで学んだよ

〇 参考にしているサイト
http://kaitei.net/csforms/

〇 オーナードロー
https://www.kisoplus.com/sample/owner.html

〇 ローカライズ
https://docs.grapecity.com/help/multirow-winforms-8/DesignerAdvanced_Localization.html
https://qiita.com/YSRKEN/items/a96bcec8dfb0a8340a5f
http://kaitei.net/csforms/localization/

#4. 配信時の録画
https://www.youtube.com/watch?v=8Cw6eJoCU-c

#5. 今回学んだこと
色々学んだよ

#6. オーナードローについて
例えばリストボックスで一部の要素のみ文字色を変えたり、一部の段の背景色を変える場合は「オーナードロー」を用います。

ここが「オーナードロー」とは何かを分かりやすく書いてくれてると思う。
そのままだとWindows既定の描画を行ってしまう所を、独自の方法で描画できますよって感じ。

#7. 多言語対応について
 Resources.resxを編集することで、日本語表示と英語表示を動的に切り替える事が可能となる。

##7.1. 作ったもの

[Japanese]ボタンまたは[English]ボタンを押した場合、テキストボックス付きのダイアログを開くアプリを作った。
テキストボックス内では同じ文字列内容を表示するが、[Japanese]ボタンの場合は”Resources.resx”から、[English]ボタンの場合は”Resources.ja-JP.resx”から内容を読み取る。

起動後の画面は以下の通り
無題.png

[Japanese]ボタンを押した場合
無題JP.png

[English]ボタンを押した場合
無題EN.png

##7.2. つくりかた

  1. デザイン画面で、[Japanese]ボタンと[English]ボタンを配置する
  2. [Japanese]ボタンと[English]ボタンのクリックイベントハンドラ関数を作成する
  3. 各ハンドラ関数の中身を以下の通りにする
 [Japanese]ボタンクリック時イベントハンドラ
private void Japanese_Click(object sender, EventArgs e)
{
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("ja-JP");
    Form2 form = new Form2();
    form.ShowDialog();
}
 [English]ボタンクリック時イベントハンドラ
private void English_Click(object sender, EventArgs e)
{
	System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en");
	Form2 form = new Form2();
	form.ShowDialog();
}
  1. ダイアログ画面は以下の様に設定
 ダイアログ画面のデザイン画面コード
namespace Dialog
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
            textBox1.Text = Properties.Resources.String1;
        }
    }
}
  1. Resourceファイルは以下の通り

Resource.jpg

Resources.ja-JP.jpg

  1. ソリューションエクスプローラは以下の通り

ソリューションエクスプローラ.PNG

 こんな感じで設定すると、ボタンの操作で表示言語が変わるアプリができました。

#8. Windows API の呼び出し

ここのプログラムをそのままコピペして動作確認した感じ。
WindowsAPIの使用は今後もよくあるみたいなので、ここの内容を覚えて応用していきたいですね!

#9. 振り返り
やっと参考サイトを最後まで読めたよ!
次週は何かを作っていきたいね!

#10. 次回予告
次回は12月12日(日)の20時からやるよ。
次どこを勉強するかは考えておくね

##ニコニコ配信先
https://com.nicovideo.jp/community/co3601066

##Twitch配信先
https://www.twitch.tv/programing_study_meeting
(もしかしたら次からはうしゅ~垢のツイッチで放送するかも)

##Discordリンク
https://discord.gg/7rcqhMGpvA

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?