3

2 つのフォームを持つ C# アプリがあります。

最初のものは、常に開いている必要があるメイン フォームです。

2 つ目は、ユーザーが有効にできるプレビュー ペインです。

ユーザーがプレビュー ペインの表示を選択すると (メニュー オプション)、プレビュー ペインが開きます。

それが私が欲しいものです。

ただし、プレビュー ペインがフォーカスされないようにしたいと考えています。それ以外の場合、ユーザーがメニュー (メイン フォーム上にある) にアクセスしたい場合、最初にクリックすると、何も起こっていないように見えます (ただし、実際にはフォーカスがプレビューからメインに切り替わります)。2 回目のクリック後にのみ、メニューにアクセスできます。

だから私はかなり簡単な解決策があると思った:

プレビューがフォーカスを取得した場合は、フォーカスをメイン フォームに設定します。

ただし、プレビュー ペインからメイン フォームにアクセスできないようです。

プレビュー ペインを表示するには、(メイン フォームで) 次のようにします。

QRcodeGenerator.QrCodePreview preview = new QRcodeGenerator.QrCodePreview();
preview.show();

(プレビューウィンドウで)実行して、フォーカスをメインフォームに戻そうとしました:

private void QrCodePreview_GotFocus(object sender, EventArgs e)
{
    QrCodeGenerator.QrCodeSampleApp.focus();
}

しかし、述べたように、アクセスできないようです。

形がなくなった

4

4 に答える 4

2

呼び出す場合

preview.show();

なので

preview.show(this);

あなたはpreview.Parentでプレビューオブジェクト内のメインフォームにアクセスすることができます。

于 2011-08-26T15:41:28.987 に答える
2

メインフォームのインスタンスを子フォームに渡す必要があります。そのため、show を呼び出す前に設定したプレビュー フォームにプロパティを作成します。次に、プレビュー フォームのインスタンスからメイン フォームのそのインスタンスにアクセスします。

于 2011-08-26T15:39:05.197 に答える
1

あなたは試すことができます、

Form1の場合、

public static Form1 Current;

public Form1()
{
    InitializeComponent();
    Current = this;
}

次に、プレビューフォームから、

Form1.Current.Focus();
于 2011-08-26T15:43:36.587 に答える