Tôi sử dụng AvalonEdit:TextEditor
. Tôi có thể bật hộp thoại tìm kiếm nhanh (ví dụ Ctrl-F) cho điều khiển này không? Hoặc có thể ai đó đã viết mã cho các từ tìm kiếm vào văn bản AvalonEdit:TextEditor
?AvalonEdit: TextEditor có chức năng tìm kiếm/thay thế nhanh không?
Trả lời
Không có nhiều tài liệu về nó, nhưng AvalonEdit làm đã tích hợp sẵn trong SearchPanel lớp đó nghe có vẻ chính xác như những gì bạn muốn. Thậm chí còn có một lớp SearchInputHandler mà làm cho nó tầm thường để có được nó nối với soạn thảo của bạn, ứng phó với các phím tắt, vv Đây là một số mẫu mã mà kèm theo logic tìm kiếm chuẩn cho một biên tập viên:
myEditor.TextArea.DefaultInputHandler.NestedInputHandlers.Add(new SearchInputHandler(myEditor.TextArea));
Đây là một ảnh chụp màn hình của nó sẽ trông như thế nào (được lấy từ ILSpy sử dụng AvalonEdit). Bạn có thể thấy điều khiển tìm kiếm ở trên cùng bên phải, các tùy chọn tìm kiếm mà nó hỗ trợ và tính năng tự động đánh dấu tùy chọn đó phù hợp với kết quả phù hợp.
Không có bất kỳ sự hỗ trợ cho thay thế ... nhưng nếu bạn chỉ cần tìm kiếm, điều này có thể là một giải pháp tuyệt vời.
Lần cuối cùng tôi kiểm tra là "Không". Bạn sẽ phải thực hiện chức năng tìm kiếm/thay thế của riêng bạn.
http://community.icsharpcode.net/forums/p/11536/31542.aspx#31542
Bạn có thể nhanh chóng thêm tìm/thay thế từ đây - http://www.codeproject.com/Articles/173509/A-Universal-WPF-Find-Replace-Dialog
ICSharpCode.AvalonEdit 4.3.1.9429
tìm kiếm và nổi bật mục.
private int lastUsedIndex = 0;
public void Find(string searchQuery)
{
if (string.IsNullOrEmpty(searchQuery))
{
lastUsedIndex = 0;
return;
}
string editorText = this.textEditor.Text;
if (string.IsNullOrEmpty(editorText))
{
lastUsedIndex = 0;
return;
}
if (lastUsedIndex >= searchQuery.Count())
{
lastUsedIndex = 0;
}
int nIndex = editorText.IndexOf(searchQuery, lastUsedIndex);
if (nIndex != -1)
{
var area = this.textEditor.TextArea;
this.textEditor.Select(nIndex, searchQuery.Length);
lastUsedIndex=nIndex+searchQuery.Length;
}
else
{
lastUsedIndex=0;
}
}
Thay thế hoạt động:
public void Replace(string s, string replacement, bool selectedonly)
{
int nIndex = -1;
if(selectedonly)
{
nIndex = textEditor.Text.IndexOf(s, this.textEditor.SelectionStart, this.textEditor.SelectionLength);
}
else
{
nIndex = textEditor.Text.IndexOf(s);
}
if (nIndex != -1)
{
this.textEditor.Document.Replace(nIndex, s.Length, replacement);
this.textEditor.Select(nIndex, replacement.Length);
}
else
{
lastSearchIndex = 0;
MessageBox.Show(Locale.ReplaceEndReached);
}
}
Trong công cụ xây dựng TextEditor trong dự án ICSharpCode.AvalonEdit, thêm SearchPanel.Install (this.TextArea); và thì đấy, sử dụng ctrl + f mở cửa sổ tìm kiếm.
(sử dụng dòng từ bài Stephen McDaniel (thay thế myEditor với điều này) cũng làm việc, nhưng sự hỗ trợ cho SearchInputHandler đang được gỡ bỏ)
(hoạt động tốt với AvalonEdit bên AvalonDock với MVVM)
Từ:
public TextEditor() : this(new TextArea())
{
}
Để:
public TextEditor() : this(new TextArea())
{
SearchPanel.Install(this.TextArea);
}
Đối với Avalon Chỉnh sửa Phiên bản 5.0.1.0, chỉ cần thực hiện việc này:
SearchPanel.Install(XTBAvalonEditor);
Trường hợp XTBAvalonEditor là tên điều khiển AvalonEdit của WPF.
Hãy chắc chắn để thêm tuyên bố sử dụng này:
using ICSharpCode.AvalonEdit.Search;
Sau đó, khi các biên tập viên có tập trung, nhấn CTL-F: Bạn sẽ thấy sự kiểm soát find bật lên trong góc trên bên phải.
Có gì để làm ngoài việc đó không? Sau khi đã "cài đặt" nó theo cách này, nó xuất hiện khi tôi nhấp vào CTRL-F, nhưng tôi không thể gõ vào nó. – Gimly
- 1. Python - chức năng "tìm"?
- 2. Chức năng thay thế XSLT không tìm thấy
- 3. Có chức năng "Pos" nào để tìm byte không?
- 4. Có chức năng "tìm tất cả" tốt trong Eclipse không?
- 5. AvalonEdit: Cascading HighlightingColorizers
- 6. python nhanh numpy nơi chức năng?
- 7. Chức năng đầu vào đầu vào nhanh
- 8. chức năng tìm kiếm()?
- 9. jQuery - không tìm thấy chức năng?
- 10. Hiển thị Cú pháp XML Không hợp lệ với AvalonEdit
- 11. Thay thế chức năng không thay thế
- 12. Javascript tìm chức năng gọi
- 13. Hàng đợi ưu tiên với chức năng tìm kiếm - Triển khai nhanh nhất
- 14. jQuery có chức năng không đồng bộ như thế nào?
- 15. Crossbrowser "inArray" chức năng (không có jQuery)
- 16. Tìm các chức năng tối thiểu
- 17. có phím tắt để tìm chức năng trong nhật thực không?
- 18. Delphi 2010 có chức năng LoadTextFromFile không?
- 19. Hive có chức năng tách chuỗi không?
- 20. Chức năng giết có đồng bộ không?
- 21. có chức năng hợp nhất AutoMapper không?
- 22. Có chức năng băm tròn không?
- 23. Haskell/Miranda: Tìm loại chức năng
- 24. Không tìm thấy đống chức năng đập sử dụng GDB
- 25. Chức năng UITextField không có bàn phím
- 26. Chức năng Trình khám phá thư mục nhanh hơn?
- 27. Tạo chức năng clr biểu thức chính quy nhanh hơn
- 28. Chức năng này có tồn tại trong PHP không?
- 29. Có hỗ trợ opencl Chức năng Con trỏ không?
- 30. R - không thể tìm thấy chức năng 'tan chảy()'
Và đối với XAML? Điều đó là không thể? –
Có rất nhiều điều mà tôi mong muốn là dễ sử dụng trong XAML khi nói đến AvalonEdit. Tôi thường kết thúc kế thừa từ 'TextEditor' để mở rộng nó. Trong một trong những dự án của tôi, tôi nghĩ tôi thậm chí còn gọi nó là 'BindableTextEditor' bởi vì tất cả những gì tôi thêm vào đều là móc để dễ ràng buộc. Tôi không phải là một chuyên gia XAML vì vậy có lẽ có một cách tốt hơn để làm điều này (hành vi?) Nhưng đó là hướng tôi muốn đi vào nếu bạn muốn kiểm soát điều này thông qua XAML. –
Brilliant !!! Cảm ơn! – peter70