C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■55988  Re[1]: windowsのバージョンについて
□投稿者/ lino. -(2010/12/21(Tue) 20:02:16)
    No55985 (如月 さん) に返信
    > 皆様のWindowsは、XP、vista、7のどれですか?
    > 私はいまだにXPsp3です。2014年までXPでいこと思ってます。
    > 皆様はどのようにお考えですか?

    7 32bitです。
    XPより立ち上がるの早くていいですよ。。。vistaは使ったことがないのでちょっと;
    ただ、Firefox 3.6.13と相性が悪い気がしますね。いきなり接続が切れて応答しなくなることが結構あるので。私のパソコンだけかなあ……13にした途端にそうなったんですけど;
記事No.55985 のレス /過去ログ94より / 関連記事表示
削除チェック/

■66780  Re[2]: Webブラウザでページを表示させる系について
□投稿者/ みゅう -(2013/05/23(Thu) 16:15:04)
    No66779 (太郎冠者 さん) に返信


    具体例に説明しますと、

    WebBrowser内でページを移動したとき、移動先のページの読み込みが完了するとTextBoxにURLを表示する


    というものが作りたいです




    初心者なので「ここをこうすればなんとかなる」と言われてもどうすればいいのかわからないので、

    具体的なコードが欲しいです
記事No.66778 のレス /過去ログ113より / 関連記事表示
削除チェック/

■92933  多言語化
□投稿者/ じょこびっち -(2019/11/11(Mon) 10:30:09)

    分類:[C#] 

    以前、多言語化で質問させていだだきました。
    http://bbs.wankuma.com/index.cgi?mode=al2&namber=92918
    起動時に言語の選択をしてメインフォームを立ち上げるのが安全とのアドバイスをいただきチャレンジしようよ試みたのですが、やり方が全然わかりませんでした。
    なので動的に変更するようにしてみました。

    private void 英語ToolStripMenuItem_Click_1(object sender, EventArgs e)
    {
    英語ToolStripMenuItem.Checked = true;
    日本語ToolStripMenuItem.Checked = false;

    Thread.CurrentThread.CurrentUICulture = new CultureInfo("en");
    ComponentResourceManager resources = new ComponentResourceManager(typeof(Form1));
    resources.ApplyResources(this, "$this");
    applyResources(resources, this.Controls);
    }
    private void applyResources(ComponentResourceManager resources, Control.ControlCollection ctls)
    {
    foreach (Control ctl in ctls)
    {
    resources.ApplyResources(ctl, ctl.Name);
    applyResources(resources, ctl.Controls);
    }
    }

    しかし、このコードだとボタンなどは変更できるのですがToolStripMenuItemだけ変更できません。どうすればいいですか?
    もしくは他の安全な方法があればコードを教えて貰えると助かります。
    よろしくお願いします。
親記事 /過去ログ161より / 関連記事表示
削除チェック/

■92935  Re[1]: 多言語化
□投稿者/ 魔界の仮面弁士 -(2019/11/11(Mon) 10:46:27)
    No92933 (じょこびっち さん) に返信
    > 起動時に言語の選択をしてメインフォームを立ち上げるのが安全とのアドバイスをいただき
    > チャレンジしようよ試みたのですが、やり方が全然わかりませんでした。

    再起動は Application.Restart(); で行えます。

    カルチャを指定するコードは、Program.cs の Main にて、
    Application.Run の前に配置してみてください。
    https://social.msdn.microsoft.com/Forums/en-US/29280bd7-c15e-444a-908f-804f896bd189/
記事No.92933 のレス /過去ログ161より / 関連記事表示
削除チェック/

■92938  Re[2]: 多言語化
□投稿者/ じょこびっち -(2019/11/11(Mon) 13:10:20)
    No92935 (魔界の仮面弁士 さん) に返信
    > ■No92933 (じょこびっち さん) に返信
    > カルチャを指定するコードは、Program.cs の Main にて、
    > Application.Run の前に配置してみてください。
    > https://social.msdn.microsoft.com/Forums/en-US/29280bd7-c15e-444a-908f-804f896bd189/

    教えていただいたサイトを参考にToolStripMenuItemのコードの最後に
    this.Controls.Clear();とInitializeComponent();を追加したら出来ました。

    しかし、Thread.CurrentThread.CurrentUICulture = new CultureInfo("en");
    この一文をProgram.csに記載するとToolStripMenuItemenで言語を選択しても英語版のみで起動してしまいます。
    出来れば英語・中国語・日本語の3言語のリソースを切り替えられたらと考えていますがカルチャを指定するコードはProgram.csに書かないと動作に不具合が出るのでしょうか?また、実現するにはどうすればいいですか?
    よろしくお願いします。
記事No.92933 のレス /過去ログ161より / 関連記事表示
削除チェック/

■92939  Re[3]: 多言語化
□投稿者/ 774RR -(2019/11/11(Mon) 13:28:08)
    オイラなら Program.cs 中 Main() に切り替えコードを置いて実行中には切り替えない(要再起動)
    要するに CurrentUICulture = new Culture(ほげ); は new Application の前に置いて、
    それ以後は CurrentUICulture / CurrentCulture はいじらないことにしている。

    具体的にどうコード化するかは、どこにその設定を置くか次第なところがあるわけだけど、

    myprog.exe を起動する際に起動用ショートカットを使うなら
    myprog.exe ja-JP とか myprog.exe zh-CN とか指定できるよう Main(string[] args) から
    new CultureInfo(args[0]); のように引っ張ってくればよいし
    (デバッグ・マニュアル部隊のハードコピー作成にはもっぱらこれ)
    (ショートカットへのファイルのドラッグ・ドロップを受け付けるときは要小細工)

    設定 Properties.Settings.Default は Main() 中でも読めるので
    new CultureInfo(MyProg.Properties.Settings.Default.UICulture); でもよさそうだし
    (未テスト)

記事No.92933 のレス /過去ログ161より / 関連記事表示
削除チェック/

■92940  Re[3]: 多言語化
□投稿者/ 魔界の仮面弁士 -(2019/11/11(Mon) 13:56:20)
    No92938 (じょこびっち さん) に返信
    > カルチャを指定するコードはProgram.csに書かないと動作に不具合が出るのでしょうか?

    たとえばカルチャー依存の情報が static readonly メンバーで管理されていた場合、
    それを実行後に書き換えることは難しいでしょう。また、static readonly で無いにしても、
    インスタンス生成時やウィンドウ生成時に確定される情報であった場合、
    カルチャーの事後変更を受け付けるには、インスタンスの再作成が必要になってしまいます。

    それゆえ『設定するのであれば Application.Run 前に実施しておく』のが望ましいと思います。


    たとえば DateTimePiceker クラスの Value プロパティは MinDate プロパティに依存しており、
    その MinDate プロパティは、static な MinimumDateTime プロパティに依存しています。

    そしてこの static プロパティの実装は、CurrentCulture の影響を受ける可能性があります。
    そのため後からカルチャーを変更した場合、日付範囲のチェックに問題を生じるかもしれません。

    https://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/DateTimePicker.cs,9a181a0974bf9ccb,references



    > しかし、Thread.CurrentThread.CurrentUICulture = new CultureInfo("en");
    > 記載するとToolStripMenuItemenで言語を選択しても英語版のみで起動してしまいます。

    ToolStripMenuItem 系の実験はしていないのですが、
    検索してみたところ、次のようなやりとりが見つかりました。

    https://stackoverflow.com/questions/7648421/switching-language-cultureinfo-globalization-does-not-affect-toolstripmenuitem
    https://stackoverflow.com/questions/6980888/localization-at-runtime

    試していませんが、上記 RuntimeLocalizer の実装が参考になるかも。
記事No.92933 のレス /過去ログ161より / 関連記事表示
削除チェック/

■92970  Re[4]: 多言語化
□投稿者/ じょこびっち -(2019/11/12(Tue) 12:02:22)
    2019/11/13(Wed) 15:38:11 編集(投稿者)

    No92940 (魔界の仮面弁士 さん) に返信

    > 試していませんが、上記 RuntimeLocalizer の実装が参考になるかも。

    とりあえずRuntimeLocalizerのクラスをそのまま利用してみようと思ったのですが
    ChangeCulture(Form1,"en")の第一引数にフォームの名前を書いたのですが
    「Form1は種類です。これは特定のコンテンツでは無効になります。」とのエラーがでます。何が問題なのでしょうか?よろしくお願いします。
記事No.92933 のレス /過去ログ161より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -