0

何年も前にVB6で書いたプログラムがうまく機能しました。ただし、すべてのアプリケーションを .NET に移行する必要があります。私はまだこれに非常に慣れていないため、プログラミングは私の主な仕事ではありません。私は航空管制官です :) 広範囲に検索しましたが、必要なすべてのポイントをカバーしているようには見えません。何か見落としがありましたら申し訳ありません。私はデータを操作するためのすべてのコーディングを処理できます。私が困惑しているのは、動的にコントロールを作成および削除することです。

プログラムは 24 時間年中無休で実行されます。単一の既定のタブ ページを持つタブ コントロールがあります。各ページには多数のコントロールがあります (.NET では、これらはテキスト ボックス、ラベル、ボタン、およびデータグリッド ビューで、おそらくそれぞれ 2 つです)。このプログラムは、60 秒ごとにデータベースを読み取り、特定のエントリを探します。このエントリが見つかると、そのエントリのタブ ページがあるかどうかがチェックされます。存在する場合、データは既存のタブ ページに追加されます (存在しない場合)。

エントリが存在しない場合、元のタブ ページのすべてのコントロールを使用して新しいタブ ページが作成され、同じ外観で配置され、ユーザーおよびプログラムからアクセスできる必要があります。ユーザーは、データ フィールドを追加または編集して各タブを操作し、さらにデータを入力してタブ ページを「閉じた」と宣言できます。

最後に、1 日の終わり (通常は現地時間の午前 1 時頃) に、元のタブを除くすべてのタブがクリアされ、1 日が新鮮に始まります。データベースでアーカイブも実行していますが、それだけのことはわかっています。

私の VB6 アプリからの主な変更点は、コントロール配列がなくなったことです。起動時にコントロールを動的に構築する他のアプリをいくつか作成しましたが、プログラムが読み込まれるとそれらは静的になります。これらすべてのコントロールを作成したり削除したりするのは、それらが作成されたときにどのような名前が付けられるかがよくわからない場合は困難です。新しいタブごとの定数はイベント名です。これは、3 ~ 6 文字の場所名と 6 桁の日付で構成され、末尾にコロンと連番が追加されます。これは、イベントの場所で 1 日に複数のイベントが開催される可能性があるためです。

私が追跡しているものについて、より具体的な情報が必要な人がいる場合は、喜んで拡張します。今のところ短くしようとしています。.NET で減価償却された一部の機能を維持するために、私は 3.5 フレームワークを使い続けています。

4

1 に答える 1

0

Plutonix は私が考えもしなかった完璧な解決策を提案してくれました。

これらすべてのコントロールを作成して破棄するのではなく、各イベントを表示するグリッドを持つメイン フォームを用意します。グリッド行は、ステータス (アクティブ、クローズ済み、注意が必要) を示すために色を付けることができます。行をダブルクリックすると、その特定のイベントと対話するために必要なコントロールを含む 2 番目のフォームが開きます。DGV コントロールはデータバインドできるため、フィールドの編集が簡単になります。

私はこの方法でいくつかの簡単な実験を行った.

すべての提案をありがとう。すべてのアイデアに感謝します。:)

于 2014-11-25T19:00:03.123 に答える