1

Awesomium .NET Winforms Web ブラウザ コントロールを使用していますが、'select' キーワードの使用に問題があります。

動作を示す html を以下に示しますが、最初にいくつかのスナップショットを示します。

ページをロードすると、この画像は初期状態を示しています。

ページが開いたら

矢印をクリックすると、コントロールが強調表示されますが、「ドロップダウン」は「開きません」。

コントロールが強調表示されたら、上矢印と下矢印を使用して選択を変更できます。

下矢印で変更

テスト対象のページははるかに複雑で、単純な選択機能以外はすべてうまく機能します。私たちは多くの JS をまったく問題なく実行しています。

足りないものはありますか?

上記の単純なページの html は次のとおりです。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Select test</title>
</head>

<body>
    <p>
    <select id="test1">
        <option value="1">option1</option>
        <option value="2">option2</option>
        <option value="3">option3</option>
        <option value="4">option4</option>
    </select>
    </p>
</body>
</html>

どんな助けでも大歓迎です!ありがとう!

4

3 に答える 3

1

これは既知の「機能」です。ポップアップ メニューの実装は開発者に任されています。

「Ken Walker」は、このアクションを実行するためのコードをここで非常にうまく提供しています

編集: 残念ながら、リンクは削除されました。おそらくこれは、この html コンストラクトをサポートする新しいバージョンがリリースされたためです。2013 年 3 月 6 日のリリースをまだ試していないので、更新が機能するかどうかを確認するまで、ここにコードを投稿します。

lbSelect というデザイナーを使用して ListBox を作成しました。私が見つけることができなかったものの 1 つは、Awesomium_Windows_Forms_WebControl_ShowPopupMenu の呼び出し方法です。フックがなく、コントロールのプロパティにも表示されませんが、デザイナー ファイルにあり、接続されています。

注意すべきことの 1 つは、メニューで項目を選択する必要があることです。矢印を選択してボックスを非表示にすることはできません。うまくいけば、更新された Awesomium が機能し、このコードがすべてなくなることを願っています。

    private void lbSelect_MouseClick(object sender, MouseEventArgs e)
    {
        if (e.Button == System.Windows.Forms.MouseButtons.Left)
        {
            itemSelected = lbSelect.SelectedIndex;
        }
    }
    private void Awesomium_Windows_Forms_WebControl_ShowPopupMenu(object sender, PopupMenuEventArgs e)
    {
        int count;
        Rectangle lbb = new Rectangle();

        itemSelected = -1;
        lbSelect.Items.Clear();
        count = e.Info.Items.Count;
        lbb.X = e.Info.Bounds.X;
        lbb.Y = e.Info.Bounds.Y + e.Info.Bounds.Height;
        lbb.Height = e.Info.ItemHeight * count;
        lbb.Width = e.Info.Bounds.Width;

        lbSelect.Bounds = lbb;
        for (int i = 0; i < count; i++)
        {
            lbSelect.Items.Add(e.Info.Items[i].Label);
        }
        lbSelect.Visible = true;
        lbSelect.BringToFront();
        do
        {
            Application.DoEvents();
        } while (itemSelected == -1);
        e.Info.Select(itemSelected);
        lbSelect.Visible = false;
    }
于 2013-01-22T18:37:33.063 に答える
1

これはバージョン1.7の私のコードです...助けてくれてありがとう...

    private ListBox lbSelect;
    private WebControl browser;

    private void CreateBrowser()
    {
        browser = new WebControl();
        this.Controls.Add(browser);
        browser.Dock = DockStyle.Fill;
        browser.ShowPopupMenu += new ShowPopupMenuEventHandler(browser_ShowPopupMenu);

        lbSelect = new ListBox();
        this.Controls.Add(lbSelect);
        lbSelect.BringToFront();
        lbSelect.Visible=false;
        lbSelect.MouseClick += new MouseEventHandler(lbSelect_MouseClick);
        lbSelect.LostFocus += new EventHandler(lbSelect_LostFocus);
    }

    private PopupMenuEventArgs _MenuArgs;
    void browser_ShowPopupMenu(object sender, PopupMenuEventArgs e)
    {
        lbSelect.Items.Clear();
        uint count = e.Info.Count;
        for (uint i = 0; i < count; i++)
            lbSelect.Items.Add(e.Info[i].Label);

        Rectangle lbb = new Rectangle
        {
            X = e.Info.Bounds.X,
            Y = e.Info.Bounds.Y + e.Info.Bounds.Height,
            Height = (count <= 10 ? (int)(e.Info.ItemHeight * count) : e.Info.ItemHeight * 10),
            Width = e.Info.Bounds.Width
        };

        lbSelect.Bounds = lbb;
        lbSelect.Visible = true;
        lbSelect.SelectedIndex = e.Info.SelectedItem;
        lbSelect.Focus();

        _MenuArgs = e;
    }

    void lbSelect_MouseClick(object sender, MouseEventArgs e)
    {
        _MenuArgs.Info.Select(lbSelect.SelectedIndex);
        lbSelect.Visible = false;
    }

    void lbSelect_LostFocus(object sender, EventArgs e)
    {
        lbSelect.Visible = false;
    }
于 2013-03-21T23:49:45.667 に答える
0

WebControlバージョン 1.7 の最終リリースでは、定義済みのドロップダウン (ポップアップ) メニューが WPF と WinForms の両方で利用可能になります。

于 2013-02-01T21:50:02.140 に答える