Cefsharp Custom Prompt - PullRequest
       4

Cefsharp Custom Prompt

0 голосов
/ 10 апреля 2020

Как я могу сделать пользовательскую подсказку? Я попытался с кодом ниже ..

public static string ShowDialog(string text, string caption) {
        Form prompt = new Form() {
            Width = 500,
            Height = 150,
            FormBorderStyle = FormBorderStyle.FixedDialog,
            Text = caption,
            StartPosition = FormStartPosition.CenterScreen
        };
        Label textLabel = new Label() { Left = 50, Top = 20, Text = text };
        TextBox textBox = new TextBox() { Left = 50, Top = 50, Width = 400 };
        Button confirmation = new Button() { Text = "Ok", Left = 350, Width = 100, Top = 70, DialogResult = DialogResult.OK };
        confirmation.Click += (sender, e) => { prompt.Close(); };
        prompt.Controls.Add(textBox);
        prompt.Controls.Add(confirmation);
        prompt.Controls.Add(textLabel);
        prompt.AcceptButton = confirmation;

        return prompt.ShowDialog() == DialogResult.OK ? textBox.Text : "";
    }

А затем я использую его, как показано ниже

public bool OnJSDialog(IWebBrowser chromiumWebBrowser, IBrowser browser, string originUrl, CefJsDialogType dialogType, string messageText, string defaultPromptText, IJsDialogCallback callback, ref bool suppressMessage) {

        if(dialogType.ToString() == "Prompt") {

            //Form prompt = ShowDialogClass.ShowDialog("as", "asd");
            string promptValue = Components.ShowDialog("Test", "123");
            if (promptValue != "") {
                callback.Continue(true, promptValue);
            } else {
                callback.Continue(false, "");
            };

        };

Но я получаю ошибку.

System.InvalidOperationException: 'Cross-thread operation not valid: Control '' accessed from a thread other than the thread it was created on.'

        return false;
    }

Как я могу реализовать это диалоговое окно, чтобы показать настраиваемое приглашение?

...