当前位置: 首页 > news >正文

C-sharp-console-gui-framework:C#控制台应用程序的GUI框架

推荐一个.Net开源项目,方便我们基于控制台创建图形用户界面(GUI)应用程序。

01 项目简介

ConsoleGUI是一个简单的布局驱动.NET框架,用于创建基于控制台的GUI应用程序。

核心功能:

  • **布局驱动:**与WPF或HTML类似,是完全布局驱动的。开发人员不需要指定控件的确切坐标,而是让堆栈面板、停靠面板和其他布局管理器自动处理。

  • **支持跨平台:**框架不依赖于特定平台,且没有外部依赖。它针对.NET标准2.0,可以在Windows和Linux机器上运行。

  • **基本控件:**提供了一系列基本控件,如文本框(TextBox)、文本块(TextBlock)、网格(DataGrid)等。

  • 响应式设计:如果窗口大小没有显式设置,布局将根据窗口的初始大小进行调整。但框架不自动检测终端大小变化。

  • **线程和兼容性:**不是线程安全的,所有UI更改应在同一线程上执行。默认情况下,ConsoleGUI使用真彩色格式,通过支持多达1678万种前景和背景颜色。如果终端不支持真彩色,可以使用兼容性模式。

02 使用方法

1、安装依赖库

Install-Package ConsoleGUI

2、引用命名空间

using ConsoleGUI;
using ConsoleGUI.Controls;
using ConsoleGUI.Space;

3、示例

using ConsoleGUI;
using ConsoleGUI.Controls;
using ConsoleGUI.Input;
using ConsoleGUI.Space;ConsoleManager.Setup();
ConsoleManager.Resize(new Size(50, 10));// 创建文本块作为欢迎信息
var welcomeTextBlock = new TextBlock
{Text = "ConsoleGUI使 用 示 例!",
};// 创建文本框供用户输入
var inputTextBox = new TextBox();// 创建一个垂直堆栈面板来垂直排列控件
var verticalStackPanel = new VerticalStackPanel();
verticalStackPanel.Add(welcomeTextBlock);
verticalStackPanel.Add(inputTextBox);ConsoleManager.Content = verticalStackPanel;var inputListeners = new IInputListener[] { inputTextBox };while (true)
{// 处理用户输入ConsoleManager.ReadInput(inputListeners);Thread.Sleep(50); // 短暂休眠以避免CPU占用过高
}

4、效果

图片

03 项目地址

https://github.com/TomaszRewak/C-sharp-console-gui-framework

- End -

推荐阅读

轻量级、高性能的ASP.NET WebAPI开发框架:6个热门开源项目汇总!

DynamicExpresso:强大的动态执行C#表达式解析器

MockQueryable:LINQ查询模拟测试工具

.NET日志库:Serilog、NLog、Log4Net等十大开源日志库大盘点!

ExcelDataReader:一个.Net高性能Excel开源读取器

相关文章:

C-sharp-console-gui-framework:C#控制台应用程序的GUI框架

推荐一个.Net开源项目,方便我们基于控制台创建图形用户界面(GUI)应用程序。 01 项目简介 ConsoleGUI是一个简单的布局驱动.NET框架,用于创建基于控制台的GUI应用程序。 核心功能: **布局驱动:**与WPF或H…...

一文搞懂后端面试之MySQL MVCC【中间件 | 数据库 | MySQL | 隔离级别 | Read View】

为什么需要MVCC 锁本身就是用于并发控制的,那么为什么InnoDB还要引入MVCC,读写都加锁不就可以控制住并发吗? 锁确实可以,但是性能太差。如果是纯粹的锁,那么写和写、读和写、读和读之间都是互斥的。如果是读写锁&…...

Mysql执行计划(上)

1、执行计划的概念 执行计划是什么:使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。 作用:分析你的查询语句或是表结构的性能瓶颈 语法:Explain SQL语句 执行计划输出内容介绍&#…...

使用Python+moviepy截取音频片段

一、使用AudioFileClip对象的subclip函数,截取1秒至3秒的音频 from moviepy.editor import *auAudioFileClip("/home/Download/test.mp3") # 创建对象clipau.subclip(1,3) # 截取1秒至3秒的音频clip.write_audiofile("/home/Download/clip.mp3"…...

Java学习Day19

动态SQL语句标签 1.if 用于根据条件判断是否包括某段 SQL 代码 <if test"checktext !null and check !"> 2.<choose>, <when>, <otherwise>类似于 Java 的 switch 语句&#xff0c;用于在多个条件中选择一个。 <select id"getSt…...

8.达梦数据库常用SQL

文章目录 前言1. 服务器资源1.1 CPU使用率1.2 内存使用率 2 数据库实例管理2.1 查询版本号2.2 查询ini配置2.3 查询归档配置2.4 数据库实例初始化参数2.5 查看数据库信息2.6 查看数据库实例信息2.7 查看数据库实例信息2.8 查看授权信息2.9 查询页大小&#xff0c;字符集大小2.1…...

深入理解接口测试:实用指南与最佳实践(四)IHRM管理系统实战-项目分析

​ ​ 您好&#xff0c;我是程序员小羊&#xff01; 前言 这一阶段是接口测试的学习&#xff0c;我们接下来的讲解都是使用Postman这款工具&#xff0c;当然呢Postman是现在一款非常流行的接口调试工具&#xff0c;它使用简单&#xff0c;而且功能也很强大。不仅测试人员会使用…...

程序编译及链接

你好&#xff01;感谢支持孔乙己的新作&#xff0c;本文就程序的编译及链接与大家分析我的思路。 希望能大佬们多多纠正及支持 &#xff01;&#xff01;&#xff01; 个人主页&#xff1a;爱摸鱼的孔乙己-CSDN博客 ​ ​ 1.翻译译环境与运行环境 当我们进行程序设计时&…...

route 命令介绍及使用方法

route 命令 作用&#xff1a;用于显示和操作 IP 路由表 &#xff08;show/manipulate the IP routing table&#xff09;。 在命令行下执行 route 命令添加路由&#xff0c;不会永久保存&#xff0c;当网卡重启或者机器重启后&#xff0c;该路由就会失效。 命令参数&#xf…...

力扣热题100_二叉树_226_翻转二叉树

文章目录 题目链接解题思路解题代码 题目链接 226. 翻转二叉树 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1] 示例 2&#xff1a; …...

Java SpringBoot 集成 MinIO 资料

Java SpringBoot 集成 MinIO 资料 一、文档 官方文档CSDN项目示例解除Spring文件上传大小限制 二、个人实战 注意事项&#xff1a; 部署MinIO时会涉及到两个端口号&#xff0c;一个为endpoint的端口&#xff0c;一个为console的端口&#xff0c;注意不要弄混 比如&#xff1a…...

鸿蒙系统开发【加解密算法库框架】安全

加解密算法库框架 介绍 本示例使用ohos.security.cryptoFramework相关接口实现了对文本文件的加解密、签名验签操作。 实现场景如下&#xff1a; 1&#xff09;软件需要加密存储本地文本文件&#xff0c;需要调用加解密算法库框架选择密钥文本文件&#xff0c;对本地文本文…...

C语言——二维数组和字符数组

二维数组 二维数组本质上是一个行列式的组合&#xff0c;也就是二维数组是有行和列两部分构成。二维数组数据是通过行列进行解读。 定义形式&#xff1a; 类型&#xff08;说明符&#xff09; 数组名[行数&#xff08;常量表达式1&#xff09;][列数&#xff08;常量表达式…...

Python 爬虫入门(九):Scrapy安装及使用「详细介绍」

Python 爬虫入门&#xff08;九&#xff09;&#xff1a;Scrapy安装及使用「详细介绍」 前言1. Scrapy 简介2. Scrapy 的安装2.1 环境准备2.2 安装 Scrapy 3. 创建 Scrapy 项目3.1 创建项目3.2 项目结构简介 4. 编写爬虫4.1 创建爬虫4.2 解析数据4.3 运行爬虫 5. 存储数据5.1 存…...

扩展addr2line程序的功能,group_add2line() 脚本的实现

------------------------------------------------------------ author: hjjdebug date: 2024年 08月 05日 星期一 16:19:07 CST descrition: 扩展addr2line程序的功能,group_add2line() 脚本的实现 ------------------------------------------------------------ 扩展addr2…...

idea中修改项目名称

公司最近有个小项目新加了很多功能&#xff0c;在叫原先的项目名有点不合适了。所以在网上查了下资料&#xff0c;发现步骤都比较复杂。自己研究了一下找到了一个相对简单的方法&#xff0c;只需要两步&#xff0c;特此记录一下。 1.修改项目文件夹名称 关闭当前项目&#xff…...

Flink开发语言使用Java还是Scala合适?

目录 1. Flink简介 1.1 什么是Apache Flink&#xff1f; 1.2 Flink的核心组件 2. Java与Scala在Flink开发中的比较 2.1 语言特性对比 2.2 开发体验对比 3. 实际开发中的应用 3.1 使用Java进行Flink开发 3.2 使用Scala进行Flink开发 4. 关键性能和优化 4.1 性能对比 …...

C++STL专题 vector底层实现

目录 一&#xff0c; vector的手搓 1.构造函数 2. 拷贝构造的实现 3.析构函数 4.begin() end() 的实现 5.reserve的实现 6.size和capacity的实现 7.push_back的实现 8.pop_back的实现 9.empty的实现 10.insert的实现 11.erase的实现 12.resize的实现 13.clear的实…...

【Linux】装机常用配置

文章目录 1. 下载常用软件包2. 更新yum源3. vim编辑器配置4. 安装C语言和C的静态库&#xff08;换root&#xff09;5. git6. sudo给普通用户提权7. 更新git版本&#xff08;centos默认安装1.8.x&#xff0c;我们更新到2.x&#xff09;8. getch9. json10. 升级gcc版本11. 跨系统…...

oracle库PASSWORD_VERSIONS 对应的加密方式

oracle库PASSWORD_VERSIONS 对应的加密方式 10G DES 11G SHA-1 12C SHA-2-based SHA-512官方文档&#xff1a; https://docs.oracle.com/database/121/DBSEG/authentication.htm#DBSEG487...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

day36-多路IO复用

一、基本概念 &#xff08;服务器多客户端模型&#xff09; 定义&#xff1a;单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用&#xff1a;应用程序通常需要处理来自多条事件流中的事件&#xff0c;比如我现在用的电脑&#xff0c;需要同时处理键盘鼠标…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...

Python网页自动化Selenium中文文档

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API&#xff0c;让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API&#xff0c;你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...

Android写一个捕获全局异常的工具类

项目开发和实际运行过程中难免会遇到异常发生&#xff0c;系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler&#xff0c;它是Thread的子类&#xff08;就是package java.lang;里线程的Thread&#xff09;。本文将利用它将设备信息、报错信息以及错误的发生时间都…...

WEB3全栈开发——面试专业技能点P4数据库

一、mysql2 原生驱动及其连接机制 概念介绍 mysql2 是 Node.js 环境中广泛使用的 MySQL 客户端库&#xff0c;基于 mysql 库改进而来&#xff0c;具有更好的性能、Promise 支持、流式查询、二进制数据处理能力等。 主要特点&#xff1a; 支持 Promise / async-await&#xf…...