2013-03-12 30 views
5

Tôi đang cố tạo dải băng tùy chỉnh trong một trong các bổ sung Excel 2010 của mình và vì một số lý do Office ghi đè một số keytips (bộ tăng tốc bàn phím). Tôi biết nếu Office thấy xung đột, nó thường sẽ ghi đè một hoặc cả hai keytips thành "Y", "Y2", "Y3", v.v. nhưng trong ví dụ này, tôi chỉ có một nút trong tab của mình để không có kiểm soát cho nó xung đột với.Xung đột Keytip Phantom trong Microsoft Office 2010 Ribbon Giao diện người dùng tùy chỉnh

Đây là XML:

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"> 
<ribbon> 
    <tabs> 
    <tab id="tabid_1" label="SampleTab" keytip = "B"> 
    <group id="grpid_1" label="SampleGroup"> 
    <button id="btnid_1" label="SampleButton" keytip="Z" /> 
    </group> 
    </tab> 
    </tabs> 
</ribbon> 
</customUI> 

Thay vì SampleButton có một keytip của Z, nó được thay thế bằng "Y2". Tôi thấy hành vi này bất kể mã khóa của Tab (hiện tại là "B"). Tôi đã kiểm tra để đảm bảo rằng không có một số nút nào khác có móc khóa "BZ" có thể xung đột nhưng không thấy bất kỳ nút nào.

Tôi cũng thấy rằng hành vi nếu tôi cố gắng làm cho keytip của SampleButton là "Y", nhưng tôi giả định điều này là bởi vì tất cả "Y *" keytips được dành riêng cho xung đột.

Ngẫu nhiên, tôi cũng gặp vấn đề này với một phím "C", nhưng vì một số lý do không giải thích đã xảy ra chỉ khi tôi không có nhãn cho <group>. Ngay khi tôi thêm nhãn vào <group>, "C" đã bị ghi đè bằng "Y2". Hành vi rất lạ.

Bất kỳ ai có bất kỳ ý tưởng nào có thể gây ra điều này? Cảm ơn bạn trước!

Trả lời

4

Tôi đã gặp sự cố tương tự và tôi đã chỉ thay đổi giá trị khóa từ chữ hoa "Z" thành chữ thường "z" và nó hoạt động. Không biết tại sao. Hy vọng nó hoạt động cho bạn.

+1

Thật kỳ lạ - Tôi nghĩ tôi đã thử điều đó nhưng tôi đoán là không ... Tôi sẽ lấy nó - Cảm ơn! – aFlocker

+0

Đáng buồn thay, điều này cũng hiển thị các chú giải chính dưới dạng chữ thường sau khi bạn bấm phím Alt. Tuy nhiên, đó là giải pháp duy nhất tôi đã tìm thấy cho đến nay. +1 – oddacorn

+0

Một tùy chọn khác và một tùy chọn mà tôi đã kết thúc, là sử dụng một chữ cái hoặc số khác cho KeyTip. Tất nhiên bạn phải xác minh rằng nó có sẵn, và một số tổ hợp phím không được hiển thị trong ruy-băng được dành riêng để sử dụng để duy trì khả năng tương thích với các lối tắt từ các phiên bản Office cũ hơn. Thật kỳ lạ khi các ký tự chữ thường hoạt động trong một số trường hợp vì không có sự khác biệt về mặt chức năng về những gì bạn nhấn phím. – oddacorn

0

Đây là hành vi tiêu chuẩn cho các tab tùy chỉnh (trái ngược với nội dung dựng sẵn) trong ứng dụng văn phòng. Để tự mình kiểm tra, chỉ cần thêm một vài tab tùy chỉnh thông qua giao diện người dùng. tiếp theo nhấn phím ALT và thông báo cách tất cả các tab tùy chỉnh là Y1, Y2, Y3, máy gia tốc ..

Tuy nhiên như đã nêu trong OP, đây không phải là hành vi khi đặt thuộc tính keytip theo chương trình hoặc thông qua XML cho các phần tử giao diện người dùng ribbon của addin. Vì nó chỉ xảy ra với một tập con giới hạn các combo chính nên tôi tưởng tượng nó có thể là một lỗi. Đề xuất ghi nhật ký này trên microsoft connect website.

+0

tại sao nó không thuộc về SO? Tôi đang lập trình một addin Excel và đây là một trong những vấn đề tôi gặp phải. – aFlocker

+0

Dù sao, khi bạn có một Tab tùy chỉnh và thực sự thiết lập KeyTip (một cái gì đó bạn không thể làm thông qua giao diện người dùng), hoặc thông qua mã bằng cách thiết lập thuộc tính RibbonTab.KeyTip, hoặc bằng cách chỉnh sửa tệp XML customUI, miễn là không có ' một xung đột, nó sẽ hoạt động tốt. Nếu tôi thực hiện các keytip trên tab "B" và keytip trên nút "R", hoặc bất kỳ thư khác, nó sẽ làm việc tốt.Chỉ khi tôi thực hiện các keytip nút "C" hoặc "Z", hiện nó nghĩ rằng có một số xung đột và thay thế "C" và "Z" với "Y2", vv ... – aFlocker

+0

Vấn đề là, không có xung đột (tức là không có nút nào khác có cùng một bộ phím tắt) nhưng nó vẫn thay thế khóa phím của tôi bằng phím số # Y. – aFlocker

0

Xin lỗi nhưng câu trả lời được chấp nhận không phù hợp với tôi! Trong giải pháp VSTO của tôi, tôi đã tìm thấy ALT-Shortcut hoạt động là "G". Vì vậy, trong mã của tôi # C Tôi thiết lập:

Globals.Ribbons.GetRibbon<MyRibbon>().tabMyRibbonTab.KeyTip = "GGG"; 

tôi sử dụng ba G để giảm thiểu xung đột với khác Add-Ins. Điều này làm việc cho tôi và tôi thậm chí có thể chọn RibbonTab trong Excel 2007 bằng cách sử dụng SendKeys (xem this câu hỏi khác).

Trân trọng, Jörg

Các vấn đề liên quan