- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 KeyBindings 在我的 xaml 中声明了键盘快捷键。我想忽略由于少数几个关键持有而导致的重复。
我只找到了使用事件和检查“IsRepetition”的解决方案,这并不真正适合我的键绑定(bind)声明。
当然,我可以在 Command 定义本身中执行此操作并测量 2 次最后执行之间的时间差,但这让我无法区分多次按下和 1 次按键保持。
仅在第一次按下时执行并在按住时忽略其余部分的最佳方法是什么?
1 Câu trả lời
您正在尝试更改按钮的行为。最好为此使用代码。最简单的方法是像这样将预览事件附加到窗口:
...
PreviewKeyDown="HandlePreviewKeyDown">
然后在代码中这样处理:
private void HandlePreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.IsRepeat)
{
e.Handled = true;
}
}
遗憾的是,这会禁用任何重复行为,即使在表单托管的文本框中也是如此。这是个有趣的问题。如果我找到更优雅的方法,我会添加到答案中。
biên tập:
好的,有两种定义键绑定(bind)的方法。
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
上面的按钮将产生一次点击,因为您通过下划线隐含地请求了 Alt-C 手势:_Click
内容。然后窗口有一个到 Alt+D 的显式键绑定(bind)。
后面的代码现在应该适用于这两种情况,并且不会干扰常规重复:
protected override void OnPreviewKeyDown(KeyEventArgs e)
{
base.OnPreviewKeyDown(e);
if (e.IsRepeat)
{
if (((KeyGesture)altD.Gesture).Matches(this, e))
{
e.Handled = true;
}
else if (e.Key == Key.System)
{
string sysKey = e.SystemKey.ToString();
//We only care about a single character here: _{character}
if (sysKey.Length == 1 && AccessKeyManager.IsKeyRegistered(null, sysKey))
{
e.Handled = true;
}
}
}
}
关于c# - 忽略 KeyBinding 中的重复(按住键 - 只执行一次命令),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12816781/
đóng cửa. Câu hỏi này không liên quan đến chủ đề. Hiện tại không chấp nhận câu trả lời. Bạn có muốn cải thiện câu hỏi này không? Cập nhật câu hỏi để phù hợp với chủ đề trên Stack Overflow. Đã đóng cửa 9 năm trước. Cải thiện điều này
Tôi có một loạt lệnh SQL mà tôi muốn chạy trên khoảng 40 bảng khác nhau. Phải có cách nào đó để thực hiện việc này mà không cần phải viết 40 lệnh khác nhau... Tôi đang chạy lệnh này trong SQL Server. Tất cả các bảng có tên khác nhau, tôi muốn vận hành
Tôi thường sử dụng lệnh "mysql_insert_id()" trong PHP để trả về id của hàng cuối cùng được chèn vào cơ sở dữ liệu của tôi. Có lệnh tương đương nào trong SQLite trong C# không? Cảm ơn bạn! -Adna Lựa chọn câu trả lời hay nhất l
Đang cố gắng tìm ra cách để điền lại các phân vùng của bảng Hive được phân vùng ds. Tôi biết cách chạy lệnh Hive từ CLI, chẳng hạn như $HIVE_HOME/bin/hive -e 'select a.col from tab1
Tôi có file .bat. Có vẻ như lệnh tiếp theo....nhiều lệnh1 ftp -i -s:copy.txt ...nhiều lệnh2 copy.txt chứa lệnh tiếp theo mở ...
Về cơ bản, tôi muốn nhập show và kiểm tra xem có lệnh show hoặc bí danh nào được xác định hay không và kích hoạt nó, nếu chưa được xác định thì kích hoạt git show. Ví dụ, rm phải thực thi rm nhưng checkout phải thực thi git checkout
Cơ sở dữ liệu chính của công ty tôi là máy iSeries và tôi đã rất thành thạo trong việc sử dụng các lệnh và cấu trúc DB2. Hiện tại tôi đang cố gắng thực hiện một dự án nhỏ nhằm cập nhật một bảng có hơn 3 triệu bản ghi. Tôi đã tìm ra một cách nhanh hơn để so sánh và "làm sạch" dữ liệu là sử dụng My
Tôi muốn tạo một bàn phím nút đơn giản trong terminal bằng Node và có thể "phù phép" để kết nối hoặc chạy các lệnh khác nhau. -------------------------------------------------- _
Chúng tôi có một tập lệnh IDE selenium mà chúng tôi đang chuyển đổi thành python webdriver. Lệnh sau đây không được chuyển đổi: [openWindow | http://mywebsite.com/index.php |
Tôi đang làm theo hướng dẫn trực tuyến này về cách tải xuống và cài đặt các tệp web từ GIT HUB. Tôi vào Chủ đề: Khởi chạy trang web tĩnh của chúng tôi và được nhắc nhập lệnh để tải xuống và cài đặt các tệp web. Tuy nhiên, khi tôi nhập lệnh yarn install
Tôi gặp vấn đề khi sử dụng lệnh elif trong tập lệnh shell, giống như trong fortran. Tôi có danh sách nhân viên của 100 công ty. Tôi muốn chặn các công ty có ít hơn 500 nhân viên. Tập lệnh của tôi là rm -f category
Tôi có một số lệnh Linux có thể tạo mã thông báo. Tôi đã tự động hóa các lệnh này trên máy Linux bằng Python dưới dạng thư viện hệ điều hành. Nó hoạt động tốt. Tuy nhiên, khi tôi thử mã tương tự trong Windows thì không có kết quả nào được trả về.
Bài viết này được chia sẻ từ Cộng đồng đám mây Huawei "Git You May Not Know Interactive Staging", tác giả: Ghi chú của Long Ge. Một số lệnh Git tương tác trong phần này giúp bạn nhóm các phần cụ thể của tệp thành các lần cam kết. Khi bạn đã sửa đổi một số lượng lớn tệp, bạn muốn chia những thay đổi này thành nhiều lần xác nhận.
Tôi muốn biết làm thế nào tôi có thể thực hiện điều này bằng cú pháp so sánh IN. Truy vấn SQL hiện tại là: select * from employee where (employeeName = 'AJAY' and month(e
Tôi đã cài đặt Hadoop tại vị trí này /usr/local/hadoop$ Bây giờ tôi muốn liệt kê các tệp trong dfs. Lệnh tôi sử dụng là: hduser@ubuntu:/usr/local/hadoop$ bin/ha
Có lệnh docker nào có thể dùng để xóa mọi thứ không? Nếu đang chạy, hãy dừng tất cả các container, xóa tất cả hình ảnh, xóa tất cả các ổ đĩa... v.v. Câu trả lời hay nhất Tôi không nghĩ có lệnh nào có thể thực hiện được điều này. Đầu tiên bạn cần dừng tất cả các container bằng cách sử dụng $ d
Về cơ bản, tôi đang tìm kiếm Scheme tương đương với Cu Cx Ce hoặc Cc Cp ở chế độ clojure/nrepl. Tôi muốn Cx Ce in đầu ra vào bộ đệm, thay vì chỉ in trong repl.
Tôi có thể sử dụng pudb (một trình gỡ lỗi Python ncurses) trong vim vì, ví dụ, :!python % chạy trong cửa sổ thiết bị đầu cuối thực tế. Tôi thích sử dụng gvim hơn, nhưng gvim chạy:!python
Tôi đang cố gắng viết một lệnh FFMPEG có chức năng: lấy đầu vào là video input.mp4 và đầu ra là hình ảnh pic.jpg chia input.mp4 thành các video dài 20 giây, đổi tên chúng theo trình tự; cho mỗi video đã chia
Tôi muốn lấy tốc độ bit của từng khung hình trong video. Tôi đang cố gắng lấy thông tin này bằng lệnh -vstats. Khi tôi chạy lệnh này - ffmpeg -i input.mp4 -vstats, nó cho thấy phải có ít nhất một tệp được xác định. Nếu ai có thể gợi ý cho tôi bất kỳ
Tôi là một lập trình viên xuất sắc, rất giỏi!