1

System.Windows.Control.RichTextBox の言語を「es-PE」に設定しようとしてい
ますが、いくつかの問題が見つかりました。たとえば、一部のコンピューターでは完全に動作し、SpellChecker は
「es-PE」言語で有効になっていますが、他のコンピューターではそれが可能です。 「en-US」で動作するだけなので、そのコントロールの問題はわかりません。XAML
と C# で次のコードを使用していました。

これは、ユーザーが GridView から行を選択し、添付のスクリーンショットを表示するときのコードです。

 private void dlstInformes_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            if (!dlstInformes.SelectedItem.ToString().Equals(""))
            {
                var source_ = dlstInformes.SelectedItems;
                InformeMedico demo = new InformeMedico(); //New Window

                foreach (informeMedico item in source_)
                {
                    numeroinforme = item.numeroinforme.ToString();
                    nombreinforme = item.nombreinforme;
                    fechainforme = item.fechainforme.ToString();
                    nombreMedico = item.medicoCompleto.ToString();
                    turnoMedico = item.turno.ToString();
                    nombrePaciente = item.pacienteCompleto.ToString();
                    nombreExamen = item.nombreinforme.ToString();

                }
                demo.Language = XmlLanguage.GetLanguage("es-PE");
                demo.txtNombreExamen.Text = nombreinforme;
                demo.lblNroInforme.Content = numeroinforme;
                demo.lblMedicoNombre.Content = nombreMedico;
                demo.lblNombrePac.Content = nombrePaciente;
                demo.lblTurnoMedico.Content = turnoMedico;
            using (DB db = new DB())
            {
                var lstTM = (from ea in db.EXAMENXATENCIONs where ea.turnomedico.Trim() != " " select ea.turnomedico).Distinct().ToList();
                string tm = (from ea in db.EXAMENXATENCIONs where ea.codigo == Convert.ToInt32(numeroinforme) select ea.turnomedico).FirstOrDefault();
                demo.cboTurnoMed.ItemsSource = lstTM;
                demo.cboTurnoMed.SelectedItem = tm;
                demo.cboTurnoMed.SelectedValue = tm;
                demo.cboTurnoMed.Text = tm;
                if (tm.Equals("RE/ES") || tm.Equals("RE/HS") || tm.Equals("RE/HT") || tm.Equals("RE/KV") || tm.Equals("HH/CS") || tm.Equals("HH/ES") || tm.Equals("HH/HS") || tm.Equals("HH/HT") || tm.Equals("HH/KV"))
                {
                    demo.FirmaUnoDefault.Content = "DEN51";
                    demo.FirmaDosDefault.Content = tm;
                }
                else if (tm.Equals("HH/AO") || tm.Equals("IU/AO") || tm.Equals("RE/AO") || tm.Equals("HH/JA") || tm.Equals("RR/JA") || tm.Equals("IU/JA"))
                {
                    demo.FirmaUnoDefault.Content = "DEN51";
                    demo.FirmaDosDefault.Content = "AOY20";
                }
                else if (tm.Equals("IU/CS") || tm.Equals("IU/ES") || tm.Equals("IU/HT") || tm.Equals("IU/KV"))
                {
                    demo.FirmaUnoDefault.Content = "IUU17";
                    demo.FirmaDosDefault.Content = tm;
                }
                else if (tm.Equals("RD/DE"))
                {
                    demo.FirmaUnoDefault.Content = "REE";
                    demo.FirmaDosDefault.Content = "DEN51";
                }
                else if (tm.Equals("RE/JC"))
                {
                    demo.FirmaUnoDefault.Content = "REE";
                    demo.FirmaDosDefault.Content = "JCCH25";
                }
                else if (tm.Equals("RE/CS"))
                {
                    demo.FirmaUnoDefault.Content = "DEN51";
                    demo.FirmaDosDefault.Content = "REE";
                }
            }
            demo.lblCodigoClase.Visibility = Visibility.Hidden;
            demo.lblCodigoEstudio.Visibility = Visibility.Hidden;
            demo.lblCodigoPaciente.Visibility = Visibility.Hidden;
            demo.FirmaUnoDefault.Visibility = Visibility.Hidden;
            demo.FirmaDosDefault.Visibility = Visibility.Hidden;
            demo.rtbHallazgo.Language = XmlLanguage.GetLanguage("es-PE");
            demo.rtbConclusion.Language = XmlLanguage.GetLanguage("es-PE");
            demo.rtbTecnica.Language = XmlLanguage.GetLanguage("es-PE");

            demo.rtbHallazgo.SpellCheck.IsEnabled = true;
            demo.rtbTecnica.SpellCheck.IsEnabled = true;
            demo.rtbConclusion.SpellCheck.IsEnabled = true;
            demo.rtbConclusion.SpellCheck.SpellingReform = SpellingReform.PreAndPostreform;

            demo.ResizeMode = ResizeMode.NoResize;

            demo.Closing += new System.ComponentModel.CancelEventHandler(notClosing_CancelEventArgs);

            demo.ShowDialog();
        }
        else
        {
            MessageBox.Show("Seleccione un item", "Error", MessageBoxButton.OK, MessageBoxImage.Asterisk);
        }
    }

代替テキスト

また、SO から「en-US」言語を構成して削除しようとすると、スペルチェッカーが完全に停止し、その言語をキーボードに再追加すると、スペルチェッカーが再表示されます。

「es-PE」または単にスペイン語を親として使用しても機能しない

前もって感謝します!

4

1 に答える 1

1

これが役立つかどうかはわかりませんが、試してみる価値はあります。

Application.StartUp イベントに次のコードを追加します。

FrameworkElement.LanguageProperty.OverrideMetadata(
            typeof(FrameworkElement),
            new FrameworkPropertyMetadata(
                XmlLanguage.GetLanguage(
                CultureInfo.CurrentCulture.IetfLanguageTag)));

または、現在のカルチャの代わりに es-PE を指定するように変更することもできます。

この投稿は、より詳細な詳細を提供する可能性があります: WPF アプリケーションを取得して正しい地域設定を取得する

于 2009-09-08T21:39:14.313 に答える