コンボボックスの値の変更を無効にする方法はありますか?私はいくつかの記事を見ましたが、それらはWPF用であり、私の状況を助けませんでした。WinFormsでコンボボックスを無効にすることはできますか?
答えて
ごcomobobox
は、あなたが探しているトリックを行いますので、外観=有効、行動=無効コンボが有効になっているが、誰も何も変更しないか、入力することができます上でこれらの設定:)
comboBox1.DropDownHeight = 1;
comboBox1.KeyDown += (s, e) => e.Handled = true;
comboBox1.KeyPress += (s, e) => e.Handled = true;
comboBox1.KeyUp += (s, e) => e.Handled = true;
場合は何らかの理由でラムダを使用することはできません。その後、ハンドラを関連付けることができます。 DropDownStyle = DropDownの場合、右クリック - >ペーストを追加で処理する必要があります。
//void comboBox1_KeyUp(object sender, KeyEventArgs e)
//{
// e.Handled = true;
//}
//void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
//{
// e.Handled = true;
//}
//void comboBox1_KeyDown(object sender, KeyEventArgs e)
//{
// e.Handled = true;
//}
次に、ハンドラを変数として保存し、後で単純に - =それらを保存します。
例:
var keyDown = (s, e) => e.Handled = true;
var keyPress = (s, e) => e.Handled = true;
var keyUp = (s, e) => e.Handled = true;
その後、彼とで置き換える:
comboBox1.KeyDown += keyDown;
comboBox1.KeyPress += keyPress;
comboBox1.KeyUp += keyUp;
を次に削除したいとき:
comboBox1.KeyDown -= keyDown;
comboBox1.KeyPress -= keyPress;
comboBox1.KeyUp -= keyUp;
varを使用するのと同じくらい簡単ではありませんが、Sanjeevakumarのメソッドと - =それらのメソッドを使用します。 –
または、 'e.Handled = someBoolVar'を使用してください。ここでsomeBoolVarの状態は有効/無効です。 –
DropDownHeightの高さをリセットするにはどうすればよいですか?私は最初に高さを保管すべきですか?それを私が再び有効にしたいときにリセットしますか? – MBU
をのGotFocus投手では(それが呼ばれているもの)フォーカスを何かに設定します。
いいえ、十分ではありません。無効にして、が正確にのように見えるので、ユーザーは完全にだまされます。新しいクラスを追加し、このコードを貼り付けます。
using System;
using System.Drawing;
using System.Windows.Forms;
class FakeComboBox : ComboBox {
private PictureBox fake;
public new bool Enabled {
get { return base.Enabled; }
set { if (!this.DesignMode) displayFake(value);
base.Enabled = value;
}
}
private void displayFake(bool enabled) {
if (!enabled) {
fake = new PictureBox();
fake.Location = this.Location;
fake.Size = this.Size;
var bmp = new Bitmap(fake.Size.Width, fake.Size.Height);
this.DrawToBitmap(bmp, new Rectangle(0, 0, bmp.Width, bmp.Height));
fake.Image = bmp;
this.Parent.Controls.Add(fake);
fake.BringToFront();
fake.Click += delegate { Console.Beep(); };
}
else {
this.Parent.Controls.Remove(fake);
fake.Dispose();
fake = null;
}
}
}
もう一度有効にすると、非常にわずかな「輝き」がWin7で得られます。非常に興味深いです。
ハハ、素晴らしい。これは不合理で、DropDownHeightを0に設定するよりもはるかに良い解決策です。 –
Beep()を忘れました。 –
このコントロールを有効にすると、再び有効に設定されます。このコードはnullである 'fake'を破棄しようとします。例外をスローします。次に灰色に見えますが、有効なコンボのように見える場合は、テーマの変更を処理する必要があります。 –
- 1. winformsデザイナで、ダブルクリック - >コードビハインドのイベントハンドラ作成を無効にすることはできますか?
- 2. SQLALCHEMY_TRACK_MODIFICATIONSを無効にすることはできますか?
- 3. control-Cを無効にすることはできますか?
- 4. フィルタテキストを無効にすることはできますか?
- 5. [アプリケーションエラー]ダイアログボックスを無効にすることはできますか?
- 6. パラメータパターンマッチングを無効にすることはできますか?
- 7. コントロール:HoverButtonを無効にすることはできますか?
- 8. a:visitedを無効にすることはできますか?
- 9. ViewerJS:ボタンを無効にすることはできますか?
- 10. application.cfcでJ2EEセッションを有効/無効にすることはできますか?
- 11. PythonでUSBデバイスを有効/無効にすることはできますか?
- 12. iPhoneエコーキャンセル、無効にすることはできますか?
- 13. アンドロイドのカスタムビューでテキストのみを無効にすることはできますが、背景イメージを無効にすることはできますか?
- 14. WinForms TreeViewでノードテキストをラップすることはできますか?
- 15. スクリプトで「デバッガ」を完全に無効にすることはできますか?
- 16. JFaceウィザードで戻るボタンを無効にすることはできますか?
- 17. Mage_Customer_Model_Address_Abstractを無効にすることはできません
- 18. テキストボックスを無効にすることはできません。
- 19. ベルを無効にすることはできません
- 20. javascriptで出力エスケープを無効にすることはできますか?
- 21. listViewでスクロールを無効にすることはできますか?
- 22. Firefox(バージョン45.0.1)でソースマップを無効にすることはできますか?
- 23. Luaでスタックトレースバックを無効にすることはできますか?
- 24. PowerBIで手動リフレッシュを無効にすることはできますか?
- 25. htaccesのキャッシングルールをIPマッチングで無効にすることはできますか?
- 26. Google PlayコンソールでAndroidインスタントアプリを無効にすることはできますか?
- 27. Expressで経路を無効にすることはできますか?
- 28. Akkaでkamon監視を無効にすることはできますか?
- 29. PuppeteerでWebソケットを無効にすることはできますか?
- 30. Laravel Passportで経路を無効にすることはできますか?
変更を拒否したい場合は、適切なメソッドを処理してください。 –
コンボボックスは正常に見えますが、ユーザーはそのコンボボックスと対話できません。この利用不可能な状態にあることをユーザーにどのように示すつもりですか? –
これは本当に悪い考えです。コンボボックスをグレイアウトすると、ユーザーが無効になっていることがわかり、変更できなくなります。 *使用可能に見えるが、編集しようとするユーザーの試行を無視するコンボボックスは紛らわしいものではない。私はそのインターフェイスを壊れた**と呼ぶだろう。 –