タグ付けされた質問 「winforms」

WinFormsは、Microsoft .NET FrameworkおよびMonoのGUIクラスライブラリであるWindows Formsに付けられた非公式の名前です。このタグ内の質問は、ターゲットフレームワーク([.net]または[mono])でもタグ付けする必要があり、通常はプログラミング言語タグでタグ付けする必要があります。

9
2つの画面のいずれかでのDataGridViewのひどい再描画パフォーマンス
私は実際にこれを解決しましたが、後世のために投稿しています。 デュアルモニターシステムのDataGridViewで非常に奇妙な問題が発生しました。この問題は、コントロールの再描画が非常に遅い(完全な再描画の場合は30秒など)として現れますが、それが私の画面の1つにある場合に限ります。一方、再描画速度は問題ありません。 私は最新の非ベータドライバー(175.何か)を搭載したNvidia 8800GTを持っています。ドライバーのバグですか?私はこの特定の構成で生きなければならないので、それを空中に残しておきます。(ただし、ATIカードでは発生しません...) ペイント速度はセルの内容とは関係ありません。カスタム描画では、塗りつぶされた長方形をペイントするだけでも、パフォーマンスはまったく向上しません。 後で、(System.Windows.Forms.Integration名前空間からの)ElementHostをフォームに配置すると問題が修正されることがわかりました。それを台無しにする必要はありません。DataGridViewもオンになっているフォームの子である必要があります。Visibleプロパティがtrueである限り、サイズを(0、0)に変更できます。 .NET 3 /3.5の依存関係をアプリケーションに明示的に追加したくありません。リフレクションを使用して、実行時に(可能であれば)このコントロールを作成するメソッドを作成します。それは機能し、少なくとも必要なライブラリがないマシンでは正常に失敗します-ただ遅い状態に戻ります。 この方法では、アプリの実行中に修正を適用することもでき、フォームでWPFライブラリがどのように変更されているかを簡単に確認できます(Spy ++を使用)。 多くの試行錯誤の末、(フォームだけでなく)コントロール自体でダブルバッファリングを有効にすると問題が修正されることに気付きました。 したがって、DataGridViewに基づいてカスタムクラスを作成するだけで、DoubleBufferingを有効にできます。それでおしまい! class CustomDataGridView: DataGridView { public CustomDataGridView() { DoubleBuffered = true; } } グリッドのすべてのインスタンスがこのカスタムバージョンを使用している限り、すべて問題ありません。これが原因でサブクラスソリューションを使用できない状況に遭遇した場合(コードがない場合)、そのコントロールをフォームに挿入しようと試みることができると思います:)(私はリフレクションを使用して、DoubleBufferedプロパティを外部から強制的にオンにして、依存関係をもう一度回避しようとする可能性が高くなります)。 こんなに単純なことが私の時間の多くを食い尽くしたのは悲しいことです...

4
ユーザーコントロール、カスタムコントロール、コンポーネントの違いは何ですか?
これらはプロジェクトに追加できる3つの異なるものであり、その違いを理解しているかどうかはよくわかりません。これらはすべて、たとえば、を操作するときにコンポーネントツールボックスに表示されるようですForm。それぞれの一般的な使用シナリオは何ですか?違いはなんですか?


11
起動時に例外コード0xE0434352でクラッシュする.NETWindowsアプリケーションを修正するにはどうすればよいですか?
私は、.NET構築したWindowsフォームIはまた、これは32ビット(x86)アプリケーションとして構築されているVisual Studioの2010を経由してパッケージをインストール/セットアップ対応を建てのVisual Studio 2010でアプリケーションを。(32ビットのみのサードパーティのWindowsフォームコントロールを使用します)。 セットアップパッケージを実行して、他のWindows 764ビット環境および32ビットWindowsXPボックスに正常に展開できます。インストールされたアプリケーションは、これらで正常に実行されます。 ただし、Windows Server 2008 R2-64ビットを実行しようとすると、起動時にアプリケーションがクラッシュします。インストーラーを介してエラーなしで正常にインストールされました。 アプリケーションをロードするとクラッシュするようです。アプリケーションの最初の行としてメッセージボックスを配置して、読み込みを過ぎたかどうかを確認します。メッセージボックスが表示されないので、アプリケーションの読み込み/初期化中に発生すると思います。 これまでのところ、私は続けるべきことをあまり見つけていません。詳細から、次のことがわかります。 Exception Code: E0434352 明らかなものがあるかどうかを確認するために釣りをしたりグーグルで検索したりしましたが、何も見えませんでした。CLRで発生する可能性のあるスタックオーバーフローへの参照がいくつか見られました。 Windowsフォームアプリケーションは、次の参照を使用して構築されています。 DevExpress InfragisticsWinformsコントロール ORACLE DataAccess DLL RabbitMQ どうした?これを理解するにはどうすればよいですか?より有用な情報を取得するためにデバッグするにはどうすればよいですか?

17
文字列コレクションを検索する最速の方法
問題: 約120,000ユーザー(文字列)のテキストファイルがあり、コレクションに保存して、後でそのコレクションを検索します。 検索方法は、ユーザーがaのテキストを変更するたびに発生TextBoxし、結果はのテキストを含む文字列になりますTextBox。 リストを変更する必要はありませんListBox。結果をプルして、に配置するだけです。 私がこれまでに試したこと: 2つの異なるコレクション/コンテナを試してみました。これらは外部テキストファイルから文字列エントリをダンプしています(もちろん1回)。 List<string> allUsers; HashSet<string> allUsers; 次のLINQクエリを使用します。 allUsers.Where(item => item.Contains(textBox_search.Text)).ToList(); 私の検索イベント(ユーザーが検索テキストを変更すると発生します): private void textBox_search_TextChanged(object sender, EventArgs e) { if (textBox_search.Text.Length > 2) { listBox_choices.DataSource = allUsers.Where(item => item.Contains(textBox_search.Text)).ToList(); } else { listBox_choices.DataSource = null; } } 結果: どちらも応答時間が遅くなりました(各キーを押す間隔は約1〜3秒)。 質問: 私のボトルネックはどこにあると思いますか?私が使ったコレクションは?検索方法は?どちらも? どうすればより良いパフォーマンスとより流暢な機能を得ることができますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.