0

親愛なる私たちは、ほぼ 98 のフォームで構成される hr アプリケーション (winform) を開発しました。しかし、現在の問題は、管理者がすべてのデータ入力を大文字にすることを望んでいることです。どのコントロールにも文字の大文字と小文字を設定していませんでした。すべてのコントロールで文字の大文字と小文字を変更することは、ほとんど非常に危険です。

入力を大文字のみに制限するアイデアを提案できますか?

また、textbox.textchanged イベントをオーバーライドしようとしましたが、それは愚かな考えのようです。

4

2 に答える 2

2

これは奇妙な要件ですが、LINQ を使用してすべての TextBox-Controls を "上部テキスト" にすることができます。

var allTxt = from form in Application.OpenForms.Cast<Form>()
             from txt in form.Controls.OfType<TextBoxBase>()
             select txt;
foreach (var txt in allTxt)
    txt.Text = txt.Text.ToUpper();

Application.OpenFormsアプリケーションが所有するすべての開いているフォームを返しTextBoxBase、テキスト コントロール (TextBox、RichTextBox) の基本クラスです。Enumerable.OfTypeのフィルタTextBoxBase

これはコントロールを再帰的に検索しないことに注意してください。現在、最上位のコントロール コンテナーのみが検索されます。再帰的な検索が必要な場合は、次のように実装してください

于 2012-10-16T08:20:11.453 に答える
0

KeyPreviewイベントをご覧ください。フォーカスがどこにあるかに関係なく、アプリのすべての入力を制御できる場合があります。

最善の解決策は、すべてのテキストボックスを独自のテキストボックスの実装に置き換えることです。このような変更をより簡単に行うことができますが、それが実用的でない場合は、KeyPreviewが機能するはずです。

于 2012-10-16T08:15:57.027 に答える