簡體   English   中英

c# UI自動化標簽

[英]c# UI Automation label

我使用微軟的 UI 自動化庫已經有一段時間了,我已經能夠操作文本框和按鈕。 但是,我在某些控件上遇到了問題。

我有一個要自動化的程序,它有一個圖片框和一個鏈接標簽,其功能類似於單擊按鈕。 這意味着如果我點擊圖片框或鏈接標簽,我將觸發一個事件,並被定向到另一個頁面。

我曾嘗試使用按鈕具有的 invoke 方法,但沒有成功。 有沒有其他方法可以觸發點擊事件或類似圖片框或鏈接標簽的事件?

提前致謝。

微軟的 UI 自動化庫: http : //msdn.microsoft.com/en-us/library/ms747327.aspx

<< 我有一個我想自動化的程序,它有一個圖片框和一個鏈接標簽,功能類似於按鈕單擊 >> - 這聽起來像是一個圖片或標簽控件,它只是傳遞鼠標按下事件,但不是否則讓系統知道它的行為就像一個按鈕。 在這種情況下,您最好的選擇是使用 UIAutomation 獲取邊界矩形,然后使用 SendInput 將鼠標移動到那里並自己執行單擊。

UIAutomation 只知道如何處理標准按鈕。 任何基本上是自定義按鈕的東西 - 例如。 處理鼠標按下的標簽 - 需要添加對一些額外接口的支持,以便告訴 UIAutomation 它可以被點擊並為 Click 方法本身提供支持。

按鈕有一個PerformClick()方法。

可以根據 UI 自動化更改 Winforms 控件的行為。 如果您希望一個 PictureBox 被 UI 自動化視為一個按鈕,因此可以使用 UI 自動化工具點擊,您可以從 PictureBox 派生並覆蓋自動化/可訪問方法,如下所示:

前:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        var pb = new PictureBox();
        pb.Dock = DockStyle.Fill;
        pb.Click += (s, e) => MessageBox.Show("hello world");
        Controls.Add(pb);
    }
}

這就是 Inspect(來自 SDK 工具)將其視為“窗格”的方式,沒有具體操作:

在此處輸入圖片說明

后:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        var pb = new ButtonPictureBox();
        pb.Dock = DockStyle.Fill;
        pb.Click += (s, e) => MessageBox.Show("hello world");
        Controls.Add(pb);
    }
}

public class ButtonPictureBox : PictureBox
{
    protected override AccessibleObject CreateAccessibilityInstance() => new Accessible(this);

    private class Accessible : ButtonBase.ButtonBaseAccessibleObject
    {
        public Accessible(ButtonPictureBox control)
            : base(control)
        {
        }

        public new ButtonPictureBox Owner => (ButtonPictureBox)base.Owner;
        public override AccessibleRole Role => AccessibleRole.PushButton;
        public override AccessibleStates State => AccessibleStates.Default;
        public override void DoDefaultAction() => Owner.OnClick(EventArgs.Empty);
    }
}

現在,Inspect 將其視為一個“按鈕”並且調用模式可用,因此如果您調用它,將引發 Click 方法:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM