Cách tốt nhất để ghi dữ liệu vào bảng điều khiển văn bản ở các vị trí tùy ý trên màn hình và với màu tùy chọn/nền là gì?Bàn điều khiển nâng cao IO trong .NET
Trả lời
Console.SetCursorPosition, Console.BackgroundColor, Console.ForegroundColor và Console.ResetColor.
Lưu ý rằng chúng đã được thêm vào Khuôn khổ .NET trong phiên bản 2.0. Trước đó bạn sẽ cần PInvoke.
Theo Mono Library List có ít nhất hai thư viện mà có thể hữu ích cho bạn:
Curses# sử dụng PDCurses trên Windows và trên Linux kernel. Nó gần như crossplatform trên một mức độ nhị phân.
MonoCurses là một liên kết được cấp phép MIT-X11, và nó bao gồm bộ công cụ GUI tối ưu gui.cs để tạo ứng dụng dựa trên bảng điều khiển.
This posting cho thấy làm thế nào để sử dụng phương pháp lớp Console để tạo ra một thanh tiến trình trên console - nó có thể là một ví dụ tốt để tham khảo ....
chức năng hiệu quả nhất là WriteConsoleOutput
. Nó có nguồn gốc win32 API, nhưng có thể được sử dụng trong ứng dụng .NET sử dụng p/gọi:
[DllImport("kernel32.dll", SetLastError = true, EntryPoint = "WriteConsoleOutputW")]
public static extern bool WriteConsoleOutput(IntPtr hConsoleOutput, CHAR_INFO[,] lpBuffer, COORD dwBufferSize,
COORD dwBufferCoord, ref SMALL_RECT lpWriteRegion);
đâu CHAR_INFO là một cấu trúc: cấu trúc
/// <summary>
/// CharSet.Unicode is required for proper marshaling.
/// </summary>
[StructLayout(LayoutKind.Explicit, CharSet = CharSet.Unicode)]
public struct CHAR_INFO
{
[FieldOffset(0)]
public char UnicodeChar;
[FieldOffset(0)]
public char AsciiChar;
[FieldOffset(2)] //2 bytes seems to work properly
public Attr Attributes;
public override string ToString() {
return string.Format("CHAR_INFO : '{0}' ({1})", AsciiChar, Attributes);
}
}
attr:
/// <summary>
/// CHAR_ATTRIBUTES native structure.
/// </summary>
[Flags]
public enum Attr : ushort {
NO_ATTRIBUTES = 0x0000,
/// <summary>
/// Text color contains blue.
/// </summary>
FOREGROUND_BLUE = 0x0001,
/// <summary>
/// Text color contains green.
/// </summary>
FOREGROUND_GREEN = 0x0002,
/// <summary>
/// Text color contains red.
/// </summary>
FOREGROUND_RED = 0x0004,
/// <summary>
/// Text color is intensified.
/// </summary>
FOREGROUND_INTENSITY = 0x0008,
/// <summary>
/// Background color contains blue.
/// </summary>
BACKGROUND_BLUE = 0x0010,
/// <summary>
/// Background color contains green.
/// </summary>
BACKGROUND_GREEN = 0x0020,
/// <summary>
/// Background color contains red.
/// </summary>
BACKGROUND_RED = 0x0040,
/// <summary>
/// Background color is intensified.
/// </summary>
BACKGROUND_INTENSITY = 0x0080,
/// <summary>
/// Leading byte.
/// </summary>
COMMON_LVB_LEADING_BYTE = 0x0100,
/// <summary>
/// Trailing byte.
/// </summary>
COMMON_LVB_TRAILING_BYTE = 0x0200,
/// <summary>
/// Top horizontal
/// </summary>
COMMON_LVB_GRID_HORIZONTAL = 0x0400,
/// <summary>
/// Left vertical.
/// </summary>
COMMON_LVB_GRID_LVERTICAL = 0x0800,
/// <summary>
/// Right vertical.
/// </summary>
COMMON_LVB_GRID_RVERTICAL = 0x1000,
/// <summary>
/// Reverse foreground and background attribute.
/// </summary>
COMMON_LVB_REVERSE_VIDEO = 0x4000,
/// <summary>
/// Underscore.
/// </summary>
COMMON_LVB_UNDERSCORE = 0x8000
}
COORD và SMALL_RECT:
[StructLayout(LayoutKind.Sequential)]
public struct COORD
{
public short X;
public short Y;
public COORD(short X, short Y)
{
this.X = X;
this.Y = Y;
}
};
[StructLayout(LayoutKind.Sequential)]
public struct SMALL_RECT
{
public short Left;
public short Top;
public short Right;
public short Bottom;
public SMALL_RECT(short left, short top, short right, short bottom) {
Left = left;
Top = top;
Right = right;
Bottom = bottom;
}
}
- 1. Có bất kỳ bàn điều khiển gdb nâng cao nào cho Eclipse không?
- 2. Chuyển hướng Embedded Python IO sang bàn điều khiển được tạo với AllocConsole
- 3. Nâng cao một cảnh báo trong đường ray mà không điều khiển chuyển hướng
- 4. Bàn điều khiển Rails với Pry
- 5. Bàn điều khiển node.js rộng bao nhiêu?
- 6. Chạy Jar trong Bàn điều khiển
- 7. Xếp hạng Nâng cao của Oracle với .Net
- 8. Chuyển hướng bàn điều khiển đến một chuỗi trong chương trình .NET
- 9. Đặt lại Bàn điều khiển IRB
- 10. Đầu ra bàn điều khiển MATLAB
- 11. Đầu ra bàn điều khiển màu Xcode
- 12. Cách tháo bàn điều khiển Chrome- *
- 13. Bàn điều khiển thay thế kcachegrind?
- 14. Thuật toán điều khiển .NET
- 15. Scala: Vẽ bảng thành bàn điều khiển
- 16. Eclipse ghi vào bàn điều khiển
- 17. Bàn điều khiển Windows% DATE% Math
- 18. Bàn điều khiển toàn màn hình C#?
- 19. Bàn điều khiển C#, Console.Xóa sự cố
- 20. Bàn điều khiển CakePHP trên Godaddy Hosting
- 21. Không có đầu ra bàn điều khiển trong Eclipse Juno
- 22. Bàn điều khiển C++ Win32 Màu
- 23. Bàn điều khiển định dạng Đầu ra
- 24. thư viện gif nâng cao
- 25. Bàn điều khiển IE10 không hoạt động
- 26. Tệp không đồng bộ IO trong .Net
- 27. Bảng điều khiển Dock .NET?
- 28. Vấn đề với Bàn điều khiển Eclipse
- 29. Python IDE trên Bàn điều khiển Linux
- 30. Đầu ra bàn điều khiển kép?