【WinForm.NET开发】ToolStrip 控件体系结构

news2024/9/22 13:29:56

本文内容

  1. ToolStrip
  2. ToolStripItem
  3. 附件类

ToolStrip 和 ToolStripItem 类提供了一种灵活的可扩展系统,用于显示工具栏、状态和菜单项。 这些类都包含在 System.Windows.Forms 命名空间中 ,它们的名称通常都带有“ToolStrip”前缀(如 ToolStripOverflow)或“Strip”后缀(如 MenuStrip)。

1、ToolStrip

以下主题介绍 ToolStrip 和派生自它的控件。

ToolStrip 是 MenuStrip、StatusStrip 和 ContextMenuStrip 的抽象基类。 下面的对象模型演示了 ToolStrip 继承层次结构。

toolstrip-object-model.gif?view=netframeworkdesktop-4.8

可以通过 Items 集合访问 ToolStrip 中的所有项。 可以通过 DropDownItems 集合访问 ToolStripDropDownItem 中的所有项。 在派生自 ToolStrip 的类中,还可以使用 DisplayedItems 属性仅访问当前显示的项。 这些项当前不在溢出菜单中。

以下项专门设计为在所有方向上无缝地与 ToolStripSystemRenderer 和 ToolStripProfessionalRenderer 配合工作。 默认情况下,它们在设计时可用于 ToolStrip 控件:

  • ToolStripButton

  • ToolStripSeparator

  • ToolStripLabel

  • ToolStripDropDownButton

  • ToolStripSplitButton

  • ToolStripTextBox

  • ToolStripComboBox

MenuStrip

MenuStrip 是取代 MainMenu 的顶级容器。 它还提供键处理和多文档界面 (MDI) 功能。 在功能上,ToolStripDropDownItem 和 ToolStripMenuItem 与 MenuStrip 配合工作,尽管它们派生自 ToolStripItem。

以下项专门设计为在所有方向上无缝地与 ToolStripSystemRenderer 和 ToolStripProfessionalRenderer 配合工作。 默认情况下,它们在设计时可用于 MenuStrip 控件:

  • ToolStripMenuItem

  • ToolStripTextBox

  • ToolStripComboBox

StatusStrip

StatusStrip 替换了 StatusBar 控件。 StatusStrip 的特殊功能包括自定义表格布局、窗体大小调整和移动手柄支持以及 Spring 属性(使 ToolStripStatusLabel 可以自动填充可用空间)。

以下项专门设计为在所有方向上无缝地与 ToolStripSystemRenderer 和 ToolStripProfessionalRenderer 配合工作。 默认情况下,它们在设计时可用于 StatusStrip 控件:

  • ToolStripStatusLabel

  • ToolStripDropDownButton

  • ToolStripSplitButton

  • ToolStripProgressBar

ContextMenuStrip

ContextMenuStrip 替换了 ContextMenu。 可以将 ContextMenuStrip 与任何控件关联,右键单击会自动显示上下文菜单(或快捷菜单)。 可以使用 Show 方法以编程方式显示 ContextMenuStrip。 ContextMenuStrip 支持可取消的 Opening 和 Closing 事件来处理动态填充和多单击情形。 ContextMenuStrip 支持图像、菜单项检查状态、文本、访问键、快捷方式和级联菜单。

以下项专门设计为在所有方向上无缝地与 ToolStripSystemRenderer 和 ToolStripProfessionalRenderer 配合工作。 默认情况下,它们在设计时可用于 ContextMenuStrip 控件:

  • ToolStripMenuItem

  • ToolStripSeparator

  • ToolStripTextBox

  • ToolStripComboBox

ToolStrip 通用功能

以下主题介绍对 ToolStrip 和派生控件通用的功能和行为。

绘制

可以通过多种方式在 ToolStrip 控件中执行自定义绘制。 与其他 Windows 窗体控件一样,ToolStrip 和ToolStripItem 两者都具有可重写的 OnPaint 方法和 Paint 事件。 与常规绘制一样,坐标系相对于控件的工作区:也就是说,控件的左上角为 0, 0。 ToolStripItem 的 Paint 事件和 OnPaint 方法的行为方式与其他控件绘制事件一样。

ToolStrip 控件还通过 ToolStripRenderer 类提供对项和容器呈现的更精细访问,该类具有用于绘制 ToolStrip 的背景、项背景、项图像、项箭头、项文本和边框的可重写方法。 这些方法的事件参数会公开多个属性,如矩形、颜色和文本格式,你可以根据需要进行调整。

若要仅调整项绘制方式的几个方面,通常会重写 ToolStripRenderer。

如果要编写一个新项并且要控制绘制的所有方面,请重写 OnPaint 方法。 在 OnPaint 内部,可以使用来自 ToolStripRenderer 的方法。

默认情况下,ToolStrip 会进行双缓冲(利用 OptimizedDoubleBuffer 设置)。

设为父级

在 ToolStrip 中,容器所有权和设为父级的概念比其他 Windows 窗体容器控件更加复杂。 这对于支持动态情形(例如溢出、跨多个 ToolStrip 项共享下拉项)以及支持从控件生成 ContextMenuStrip 是必需的。

以下列表介绍与设为父级相关的成员并说明其用法。

  • OwnerItem 访问作为下拉项的源的项目。 这类似于 SourceControl,但不是返回控件,而是返回 ToolStripItem。

  • SourceControl 确定在多个控件共享相同 ContextMenuStrip 时,哪个控件是 ContextMenuStrip 的源。

  • GetCurrentParent 是 Parent 属性的只读访问器。 父级与所有者的不同之处在于,父级表示项在其中显示的返回的当前 ToolStrip,它可能处于溢出区域中。

  • Owner 返回项集合包含当前 ToolStripItem 的 ToolStrip。 这是在顶级 ToolStrip 中引用 ImageList 或其他属性的最佳方式,无需编写特殊代码来处理溢出。

继承的控件的行为

每当在继承中使用以下控件时,它们便会锁定:

  • ToolStrip

  • MenuStrip

  • ContextMenuStrip

  • StatusStrip

  • 在 ToolStripContainer 中包含面板的 ToolStripPanel 以及单个 ToolStripPanel 控件。

例如,使用上面列表中的一个或多个控件创建新 Windows 窗体应用程序。 将一个或多个控件的访问修饰符设置为 public 或 protected,然后生成项目。 添加从第一个窗体继承的窗体,然后选择继承的控件。 该控件会显示为已锁定,行为如同其访问修饰符是 private 一样。

ToolStripContainer 对继承的支持

ToolStripContainer 控件支持有限继承方案,类似于以下示例:

  1. 创建新的 Windows 窗体应用程序。

  2. 在窗体上添加一个 ToolStripContainer 控件。

  3. 将 ToolStripContainer 的访问修饰符设置为 public 或 protected

  4. 将 ToolStrip、MenuStrip 和 ContextMenuStrip 控件的任意组合添加到 ToolStripContainer 的 ToolStripPanel 区域。

  5. 生成项目。

  6. 添加从第一个窗体继承的窗体。

  7. 在该窗体上选择继承的 ToolStripContainer。

子控件的继承行为

完成前面的步骤后,会发生以下继承行为:

  • 在设计器中,控件显示为带有继承图标。

  • ToolStripPanel 控件已锁定;不能选择或重新排列其内容。

  • 你可以向 ToolStripContentPanel 添加控件、移动控件以及将其设置为 ToolStripContentPanel 的子控件。

  • 生成窗体后,更改会保持不变。

     备注

    从属于 ToolStripContainer 一部分的所有 ToolStripPanel 控件中移除访问修饰符。 ToolStripContainer 的访问修饰符会控制整个控件。

部分信任

部分信任下的 ToolStrip 限制旨在防止无意中输入未经授权的人员或服务可能使用的个人信息。 保护措施如下所示:

  • ToolStripDropDown 控件要求 AllWindows 显示 ToolStripControlHost 中的项。 这适用于内部控件(例如 ToolStripTextBox、ToolStripComboBox 和 ToolStripProgressBar)以及用户创建的控件。 如果不满足此要求,则不会显示这些项。 不会引发异常。

  • 不允许将 AutoClose 属性设置为 false,并且会忽略可取消的 Closing 事件参数。 这使得在未关闭下拉项的情况下,无法输入多个击键。 如果不满足此要求,则不会显示这类项。 不会引发异常。

  • 如果许多击键处理事件在 AllWindows 之外的部分信任上下文中发生,则不会引发这些事件。

  • 未授予 AllWindows 时,不会处理访问键。

使用情况

以下使用模式与 ToolStrip 布局、键盘交互和最终用户行为有关:

  • 加入 ToolStripPanel

    ToolStrip 可以在 ToolStripPanel 中以及跨 ToolStripPanel 重新定位。 Dock 属性会被忽略,如果 Stretch 属性是 false,则随着项添加到 ToolStripPanel,ToolStrip 的大小会增大。 通常,ToolStrip 不参与 Tab 键顺序。

  • 停靠

    ToolStrip 放置在容器一侧的固定位置上,其大小会在它所停靠的整个边缘上扩展。 通常,ToolStrip 不参与 Tab 键顺序。

  • 绝对定位

    ToolStrip 与其他控件一样,因为它通过 Location 属性进行放置,具有固定大小,并且通常参与 Tab 键顺序。

键盘交互

访问密钥

与 ALT 键结合使用或跟在 ALT 键后使用时,访问键是使用键盘激活控件的一种方法。 ToolStrip 支持显式和隐式访问键。 显式定义会在字母前面使用与号 (&) 字符。 隐式定义使用尝试基于给定 Text 属性中的字符顺序查找匹配项的算法。

快捷键

MenuStrip 使用的快捷键使用 Keys 枚举的组合(不特定于顺序)定义快捷键。 还可以使用 ShortcutKeyDisplayString 属性仅显示带有文本的快捷键,例如显示“Del”而不是“Delete”。

导航

ALT 键会激活 MainMenuStrip 所指向的 MenuStrip。 在此处,CTRL+TAB 会在 ToolStripPanel 中的 ToolStrip 控件之间导航。 数字键盘上的 TAB 键和箭头键会在 ToolStrip 中的项之间导航。 一种特殊算法会处理溢出区域中的导航。 空格键会选择 ToolStripButton、ToolStripDropDownButton 或 ToolStripSplitButton。

焦点和验证

通过 ALT 键激活时,MenuStrip 或 ToolStrip 通常不会获取焦点,也不会从当前具有焦点的控件中移除焦点。 如果在 MenuStrip 中或 MenuStrip 的下拉列表中承载了某个控件,则当用户按 TAB 键时,该控件会获取焦点。 通常,在通过键盘激活时,可能不会引发 MenuStrip 的 GotFocus、LostFocus、Enter 和 Leave 事件。 在这种情况下,请改用 MenuActivate 和 MenuDeactivate 事件。

默认情况下,CausesValidation 为 false。 对窗体显式调用 Validate 以执行验证。

Layout

通过使用 LayoutStyle 属性选择 ToolStripLayoutStyle 的成员之一来控制 ToolStrip 布局。

堆积布局

堆积是在 ToolStrip 两端将各个项相互并排排列。 以下列表介绍了堆积布局。

  • StackWithOverflow 是默认值。 此设置会使 ToolStrip 根据 Orientation 属性自动更改其布局,以处理拖动和停靠情形。

  • VerticalStackWithOverflow 垂直呈现彼此相邻的 ToolStrip 项。

  • HorizontalStackWithOverflow 水平呈现彼此相邻的 ToolStrip 项。

堆积布局的其他功能

Alignment 确定项对齐的 ToolStrip 端。

当 ToolStrip 不能容纳项时,溢出按钮会自动出现。 Overflow 属性设置确定项是始终、根据需要还是从不出现在溢出区域中。

在 LayoutCompleted 事件中,可以检查 Placement 属性以确定项是放置在主 ToolStrip 上、溢出 ToolStrip 上还是当前完全未显示。 项未显示的典型原因是主 ToolStrip 中不能容纳项,并且其 Overflow 属性设置为 Never。

可通过将 ToolStrip 放置在 ToolStripPanel 中并将其 GripStyle 设置为 Visible 来使它可移动。

其他布局选项

其他布局选项为 Flow 和 Table。

流布局

Flow 布局是 ContextMenuStrip、ToolStripDropDownMenu 和 ToolStripOverflow 的默认布局。 它类似于 FlowLayoutPanel。 Flow 布局的功能如下所示:

  • FlowLayoutPanel 的所有功能都通过 LayoutSettings 属性进行公开。 必须将 LayoutSettings 类强制转换为 FlowLayoutSettings 类。

  • 可以在代码中使用 Dock 和 Anchor 属性对齐行中的项。

  • Alignment 属性被忽略。

  • 在 LayoutCompleted 事件中,可以检查 Placement 属性以确定项是放置在主 ToolStrip 上还是无法容纳。

  • 不会呈现手柄,因此无法移动 ToolStripPanel 中采用 Flow 布局样式的 ToolStrip。

  • 不会呈现 ToolStrip 溢出按钮,会忽略 Overflow。

表格布局

Table 布局是 StatusStrip 的默认布局。 它类似于 TableLayoutPanel。 Flow 布局的功能如下所示:

  • TableLayoutPanel 的所有功能都通过 LayoutSettings 属性进行公开。 必须将 LayoutSettings 类强制转换为 TableLayoutSettings 类。

  • 可以在代码中使用 Dock 和 Anchor 属性对齐表单元格中的项。

  • Alignment 属性被忽略。

  • 在 LayoutCompleted 事件中,可以检查 Placement 属性以确定项是放置在主 ToolStrip 上还是无法容纳。

  • 不会呈现手柄,因此无法移动 ToolStripPanel 中采用 Table 布局样式的 ToolStrip。

  • 不会呈现 ToolStrip 溢出按钮,会忽略 Overflow。

2、ToolStripItem

以下主题介绍 ToolStripItem 和派生自它的控件。

ToolStripItem 是进入 ToolStrip 的所有项的抽象基类。 下面的对象模型演示了 ToolStripItem 继承层次结构。

toolstripitem-object-model.gif?view=netframeworkdesktop-4.8

ToolStripItem 类直接从 ToolStripItem 继承,或是通过 ToolStripControlHost 或 ToolStripDropDownItem 间接从 ToolStripItem 继承。

ToolStripItem 控件必须包含在 ToolStrip、MenuStrip、StatusStrip 或 ContextMenuStrip 中,不能直接添加到窗体中。 各种容器类设计为包含 ToolStripItem 控件的适当子集。

下表列出了常用 ToolStripItem 控件以及它们在其中具有外观最佳的容器。 虽然任何 ToolStrip 项可以在任何 ToolStrip 派生的容器中承载,但这些项设计为在以下容器中具有最佳外观:

 备注

ToolStripDropDown 不会出现在设计器工具箱中。

展开表

包含的项ToolStripMenuStripContextMenuStripStatusStripToolStripDropDown
ToolStripButtonNoNo
ToolStripComboBoxNo
ToolStripSplitButtonNo
ToolStripLabelNo
ToolStripSeparatorNo
ToolStripDropDownButtonNo
ToolStripTextBoxNo
ToolStripMenuItemNoNo
ToolStripStatusLabelNoNoNoNo
ToolStripProgressBarNoNo
ToolStripControlHostNo

ToolStripButton

ToolStripButton 是用于 ToolStrip 的按钮项。 可以使用各种边框样式显示它,并且可以使用它表示和激活操作状态。 还可以定义它,使其在默认情况下具有焦点。

ToolStripLabel

ToolStripLabel 在 ToolStrip 控件中提供标签功能。 ToolStripLabel 类似于 ToolStripButton,在默认情况下不会获得焦点,并且不会呈现为按下或突出显示。

作为所承载项的 ToolStripLabel 可支持访问键。

可对 ToolStripLabel 使用 LinkColor、LinkVisited 和 LinkBehavior 属性,以在 ToolStrip 中支持链接控件。

ToolStripStatusLabel

ToolStripStatusLabel 是专为在 StatusStrip 中使用而设计的 ToolStripLabel 版本。 特殊功能包括 BorderStyle、BorderSides 和 Spring。

ToolStripSeparator

ToolStripSeparator 会根据方向将垂直或水平线添加到工具栏或菜单。 通过它可对项(如菜单上的项)进行分组或区分。

可以通过从下拉列表中进行选择,在设计时添加 ToolStripSeparator。 但是,还可以通过在设计器模板节点或 Add 方法中键入连字符 (-),来自动创建 ToolStripSeparator。

ToolStripControlHost

ToolStripControlHost 是 ToolStripComboBox、ToolStripTextBox 和 ToolStripProgressBar 的抽象基类。 ToolStripControlHost 可以通过两种方式承载其他控件,包括自定义控件:

  • 使用派生自 Control 的类构造 ToolStripControlHost。 若要完全访问所承载控件和属性,必须将 Control 属性强制转换为它所表示的实际类。

  • 扩展 ToolStripControlHost,并在继承的类的无参数构造函数中,调用基类构造函数(传递派生自 Control 的类)。 使用此选项可以包装常用控件方法和属性,以便可在 ToolStrip 中轻松访问。

ToolStripComboBox

ToolStripComboBox 是为在 ComboBox 中承载而优化的 ToolStrip。 所承载控件的属性和事件的子集在 ToolStripComboBox 级别进行公开,但基础 ComboBox 控件可通过 ComboBox 属性进行完全访问。

ToolStripTextBox

ToolStripTextBox 是为在 TextBox 中承载而优化的 ToolStrip。 所承载控件的属性和事件的子集在 ToolStripTextBox 级别进行公开,但基础 TextBox 控件可通过 TextBox 属性进行完全访问。

ToolStripProgressBar

ToolStripProgressBar 是为在 ProgressBar 中承载而优化的 ToolStrip。 所承载控件的属性和事件的子集在 ToolStripProgressBar 级别进行公开,但基础 ProgressBar 控件可通过 ProgressBar 属性进行完全访问。

ToolStripDropDownItem

ToolStripDropDownItem 是 ToolStripMenuItem、ToolStripDropDownButton 和 ToolStripSplitButton 的抽象基类,可以直接承载项,也可以在下拉容器中承载其他项。 为此,可将 DropDown 属性设置为 ToolStripDropDown,并设置 ToolStripDropDown 的 Items 属性。 可通过 DropDownItems 属性直接访问这些下拉项。

ToolStripMenuItem

ToolStripMenuItem 是一种 ToolStripDropDownItem,与 ToolStripDropDownMenu 和 ContextMenuStrip 配合工作来处理菜单的特殊突出显示、布局和列排列。

ToolStripDropDownButton

ToolStripDropDownButton 类似于 ToolStripButton,但它在用户单击时会显示下拉区域。 可通过设置 ShowDropDownArrow 属性来隐藏或显示下拉箭头。 ToolStripDropDownButton 承载用于显示溢出 ToolStrip 的项的 ToolStripOverflowButton。

ToolStripSplitButton

ToolStripSplitButton 合并了按钮和下拉按钮功能。

使用 DefaultItem 属性可将所选下拉项的 Click 事件与按钮上显示的项同步。

ToolStripItem 通用功能

ToolStripItem 提供以下对继承控件通用的功能和选项:

  • 核心事件

  • 图像处理

  • 保持同步

  • 文本和图像关系

  • 显示样式

核心事件

ToolStripItem 控件接收自己的单击、鼠标和绘制事件,还可以执行一些键盘预处理。

图像处理

Image、ImageAlign、ImageIndex、ImageKey 和 ImageScaling 属性与图像处理的各个方面相关。 可通过直接设置这些属性,或通过设置仅运行时 ImageList 属性,在 ToolStrip 控件中使用图像。

图像缩放由 ToolStrip 和 ToolStripItem 中的属性交互确定,如下所示:

  • ImageScalingSize 是最终图像的规模,由图像的 ImageScaling 设置和容器的 AutoSize 设置的组合确定。

    • 如果 AutoSize 为 true(默认值)并且 ToolStripItemImageScaling 为 SizeToFit,则不进行图像缩放,ToolStrip 大小为最大项的大小或规定的最小大小。

    • 如果 AutoSize 为 false 并且 ToolStripItemImageScaling 为 None,则不进行图像和 ToolStrip 缩放。

保持同步

Alignment 属性的值可确定项出现在 ToolStrip 的哪一端。 仅当 ToolStrip 布局样式设置为堆栈溢出值之一时,Alignment 属性才有效。

项会按照项出现在项集合中的顺序放置在 ToolStrip 上。 若要以编程方式更改项的放置位置,请使用 Insert 方法在集合中移动项。 此方法会移动项,但不复制它。

文本和图像关系

TextImageRelation 属性定义 ToolStripItem 上图像相对于文本的相对位置。 缺少图像、文本或两者的项被视为特殊情况,以便 ToolStripItem 不会对缺失元素显示空白点。

显示样式

DisplayStyle 使你可以设置项文本和图像属性的值,同时仅显示所需内容。 这通常用于在不同上下文中显示同一项时仅更改显示样式。

3、附件类

提供各种其他功能的类包括:

  • ToolStripManager 支持整个应用程序的 ToolStrip 相关任务,例如合并、设置和呈现器选项。

  • ToolStripRenderer 使你可以轻松地将特定样式或主题应用于 ToolStrip。

  • ToolStripProfessionalRenderer 基于可替换的颜色表 (ProfessionalColorTable) 创建笔和画笔。

  • ToolStripSystemRenderer 将系统颜色和平面视觉对象样式应用于 ToolStrip 应用程序。

  • ToolStripContainer 类似于 SplitContainer。 它使用四个停靠侧面板(ToolStripPanel 的实例)和一个中央面板(ToolStripContentPanel 的实例)创建典型排列。 无法移除侧面板,但可以隐藏它们。 无法移除和隐藏中央面板。 可以在侧面板中排列一个或多个 ToolStrip、MenuStrip 或 StatusStrip 控件,并且可以将中央面板用于其他控件。 ToolStripContentPanel 还提供了一种方式将呈现器支持引入窗体主体,以获得一致的外观。 ToolStripContainer 不支持多文档界面 (MDI)。

  • ToolStripPanel 提供用于移动和排列 ToolStrip 控件的空间。 可以仅使用一个面板(如果选择这样做),并且 ToolStripPanel 十分适用于 MDI 方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1404729.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

yolov8 opencv dnn部署自己的模型

源码地址 本人使用的opencv c github代码,代码作者非本人 使用github源码结合自己导出的onnx模型推理自己的视频 推理条件 windows 10 Visual Studio 2019 Nvidia GeForce GTX 1070 opencv4.7.0 (opencv4.5.5在别的地方看到不支持yolov8的推理,所以只使用opencv…

HDMI、VGA、DVI、DB接口的区别

HDMI、VGA、DVI和DB(也称为DisplayPort)是不同类型的视频接口标准,它们用于连接计算机、显示器、电视和其他视频设备。 HDMI(High-Definition Multimedia Interface,高清晰度多媒体接口):HDMI支…

C语言——静态通讯录的实现

今天我们来实现一下一个静态的通讯录: 我就先展示一下几个功能: 实现一个通讯录; 通讯录可以用来存储100个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址 提供方法: 添加联系人信息删除指定…

rancher和k8s接口地址,Kubernetes监控体系,cAdvisor和kube-state-metrics 与 metrics-server

为了能够提前发现kubernetes集群的问题以及方便快捷的查询容器的各类参数,比如,某个pod的内存使用异常高企 等等这样的异常状态(虽然kubernetes有自动重启或者驱逐等等保护措施,但万一没有配置或者失效了呢)&#xff0…

容器技术2-镜像与容器储存

目录 一、镜像制作 1、ddocker build 2、docker commit 二、镜像存储 1、公共仓库 2、私有仓库 三、镜像使用 四、容器存储 1、镜像元数据 2、存储驱动 3、数据卷 一、镜像制作 1、ddocker build 基于 Dockerfile 自动构建镜像 其机制为:每一行都会基于…

Go 的 Http 请求系统指南

文章目录 快速体验请求方法URL参数响应信息BodyStatusCodeHeaderEncoding 图片下载定制请求头复杂的POST请求表单提交提交文件 CookieClient 上设置 Cookie请求上设置 Cookie 重定向和请求历史超时设置总超时连接超时读取超时 请求代理错误处理总结 前几天在 “知乎想法” 谈到…

linux安装docker(入门一)

环境:centos 7(linux) 网站 官网: https://docs.docker.com/ Docker Hub 网站: https://hub.docker.com/ 容器官方概述 一句话概括容器:容器就是将软件打包成标准化单元,以用于开发、交付和部署。 容器镜像是轻量的、可执行的独立软件包 &…

Python小细节之代码极致简化到一行(5)(列表推导式)(技法慎用)

列表、推导式 引言简化前简化后讲解简化前简化后 应用结尾 引言 简单快速 大行其道 现在我又带着简化代码来了 我思考了下 简化的代码是技巧的体现 但是简短的代码里面 蕴藏着的是Python的精华 所以 我会更加详细的解析代码的内容 致力于让每个零基础的人都看懂 简化前 m…

DP活动:HMI-Board以太网数据监视器(一)以太网外设的使用

HMI-Board以太网数据监视器 开发工具  RT-Thread Studio/Keil MDK5(固件开发、编译)  SquareLine Studio(LVGL UI设计工具) 资料链接  RT-Thread Studio下载链接: https://download_redirect.rt-thread.org/…

C# 控制台进度条

最简单 namespace ProcessStu01 {internal class Program{static void Main(string[] args){for (int i 1; i < 100; i){Console.Write("\r{0,3}%",i);Thread.Sleep(50);}}} }第三方库 https://github.com/Mpdreamz/shellprogressbar using ShellProgressBar…

ubuntu source: not found

1、原因分析&#xff1a; shell 的解释器不是 bash&#xff0c;需把 shell 的解释器更改为 bash 2、ls -l /bin/sh 3、sudo dpkg-reconfigure dash 选择No 4、ls -l /bin/sh 5、reboot&#xff08;此步必须持续&#xff0c;否则无效&#xff09;

JUC并发编程-集合不安全情况以及Callable线程创建方式

6. 集合不安全 1&#xff09;List 不安全 //java.util.ConcurrentModificationException 并发修改异常&#xff01; public class ListTest {public static void main(String[] args) {List<Object> arrayList new ArrayList<>();for(int i1;i<30;i){new Thr…

020-信息打点-红蓝队自动化项目资产侦察企查产权武器库部署网络空间

020-信息打点-红蓝队自动化项目&资产侦察&企查产权&武器库部署&网络空间 #知识点&#xff1a; 1、工具项目-红蓝队&自动化部署 2、工具项目-自动化侦查收集提取 3、工具项目-综合&网络空间&信息 演示案例&#xff1a; ➢自动化-武器库部署-F8x ➢自…

uniapp中vue2项目导入高德地图

1、看官网新手入门链接导入原生高德地图&#xff1a; JS API 结合 Vue 使用-基础-进阶教程-地图 JS API 2.0|高德地图API (amap.com) 具体步骤&#xff1a; 第一步&#xff0c;安装插件 npm i amap/amap-jsapi-loader --save 第二步&#xff0c;在vue组件中写代码显示地图…

如何在科技创新中发挥国有企业的战略支撑作用?

要在科技创新中发挥国有企业的战略支撑作用&#xff0c;需要采取以下措施&#xff1a; 1. 强化国有企业创新主体地位&#xff1a;鼓励和支持国有企业加强技术创新、产品创新、组织创新和市场创新&#xff0c;提高自主创新能力。政府可以给予国有企业一定的政策和资金支持&…

MATLAB数据处理: 每种样本类型随机抽样

tn5;% 每种类型随机抽样数 indextrain[];% 训练样本序号集 for i1:typenumber index301 find(typemat i); n2length(index301); index302randperm(n2); index401index301(index302(1:tn)); indextrain[indextrain; index401]; end 该代码可以对大样…

【ZYNQ入门】第十篇、基于FPGA的图像白平衡算法实现

目录 第一部分、关于白平衡的知识 1、MATLAB 自动白平衡算法的实现 1.1、matlab代码 1.2、测试效果 1.3 测试源图 2、为什么摄像头采集的图像要做白平衡 3、自动白平衡算法总结 4、FPGA设计思路 4.1、实时白平衡的实现 4.2、计算流程优化思路 第二部分、硬件实…

使用PSIM软件生成DSP28335流水灯程序

最近在学习DSP28335芯片&#xff0c;然后在使用PSIM仿真软件时发现这个仿真软件也支持28335芯片&#xff0c;于是就想学习下如何在PSIM软件中使用DSP28335芯片。在PSIM自带的官方示例中有使用DSP28335芯片的相关例子。 工程下载链接 https://download.csdn.net/download/qq_20…

Docker Ipvlan l3s模式说明

看到Docker Ipvlan中有三种模式L2、L3、L3S模式&#xff0c;查阅了L3S&#xff0c;记录如下&#xff1a; 起因 Docker链接: IPvlan network driver 概念 注释说明&#xff08;摘选自: ipvlan-l3s模式&#xff09; L3S mode与L3 mode 的区别在于启用了iptables (conn-track…

[计算机提升] 切换(域)用户

4.14 切换(域)用户 4.14.1 为什么要切换用户 在Windows系统中&#xff0c;切换用户的主要目的是为了实现多用户共享同一台计算机的便利和安全。当多个人需要使用同一台计算机时&#xff0c;每个人可以登录自己的用户账户&#xff0c;这样可以避免互相干扰和混淆数据。 以下是…