WinForm_初识_事件_消息提示

文章目录

  • WinForm开发环境的使用
    • 软件部署的架构
      • B/S 架构应用程序
      • C/S 架构应用程序
  • 创建 Windows 应用程序
    • 窗口介绍
    • 查看设计窗体 Form1.cs 后台代码
    • 窗体 Form1.cs
    • 窗体的常用属性
  • 事件驱动机制
    • 事件的应用
    • 事件的测试
    • 测试事件的级联响应
    • 常用控件的事件
    • 事件响应的公共方法
  • 消息提示的用法
    • 为什么要使用消息框
    • 使用
    • 参数格式
    • MessageBoxButtons 属性 样式
    • MessageBoxIcon属性 样式
    • 示例

WinForm开发环境的使用

WinForms,作为 .NET Framework 中用于创建 Windows 应用程序的用户界面的一部分,提供了丰富的控件组件,极大地便利了桌面应用程序的开发。本篇文章将深入探讨 WinForms 中的事件驱动机制和消息提示框的使用方法,旨在帮助开发者更好地理解和运用这些基础知识,以提升开发效率和改善程序的用户体验。

本专栏会持续更新Winform相关教程,可以订阅追更 !!!

软件部署的架构

B/S 架构应用程序

  • B/S 架构应用程序(Web应用程序):浏览器/服务器(Browser/Server)
    • 浏览器将请求发送给Web服务器,Web服务器对请求进行处理,将响应的数据发回浏览器。
    • 应用程序全部部署在服务器端,客户端只有浏览器。
    • 对应各大公司的官网 Web 开发。
         ┌───────────────┐       ┌───────────────┐
         │   客户端      │       │   Web服务器   │
         │   (浏览器)    ├──────>│                │
         │               │       │   应用程序     │
         │               │       │   数据处理     │
         │               │       │   业务逻辑     │
         └───────────────┘       └───────────────┘
                               │
                               │
                               ▼
                       ┌──────────────┐
                       │   数据库     │
                       └──────────────┘
    

C/S 架构应用程序

  • C/S 架构应用程序( Windows、WinForm、桌面应用程序):客户端/服务器( Client/Server )
    • 客户端向服务器发出请求,服务器处理请求并将响应发送给客户端。
    • 应用程序全部或部分部署在客户端,数据库或部分程序在服务器端。
         ┌───────────────┐       ┌───────────────┐
         │   客户端       │       │   服务器端     │
         │   (Windows App│       │   应用程序     │
         │   或桌面App)   ├──────>│   数据处理     │
         │               │       │   业务逻辑     │
         └───────────────┘       └───────────────┘
                               │
                               │
                               ▼
                       ┌──────────────┐
                       │   数据库     │
                       └──────────────┘
                       
      

创建 Windows 应用程序

在 Visual Stuido 中创建 Windows 应用程序的步骤:

  1. 打开 VS2022 或者 其他版本

  2. 创建新项目在这里插入图片描述

  3. 项目类型: Visual C#项目

  4. 模板: Windows应用程序在这里插入图片描述

  5. 配置新项目(设置项目名称、保存的路径、以及.net framework版本)
    在这里插入图片描述

窗口介绍

  1. 菜单区域在这里插入图片描述

  2. 工具栏在这里插入图片描述

  3. 编辑区(可以根据需求,调整大小)在这里插入图片描述

  4. 工具箱(可以尝试拖几个控件到我们的编辑区)在这里插入图片描述

  5. 属性区(可以修改控件的属性和行为)在这里插入图片描述

    • 如果找不到属性窗口:视图 -> 属性窗口(W) F4
  6. 窗体的设计文件(稍后会详细讲解)在这里插入图片描述

  7. 窗体的资源文件在这里插入图片描述

  8. 应用程序的主入口点 Program.cs(将来根据需求,修改里面的代码)在这里插入图片描述

  9. 应用程序的引用在这里插入图片描述

  10. 程序集信息
    在这里插入图片描述

运行项目(可在解决方案右键在资源管理器中显示,找到 Debug 文件中的 exe 文件)。

查看设计窗体 Form1.cs 后台代码

快捷键:选择 Form1.cs + F7
快捷键:再次摁下 shift + F7 可还原窗体

窗体 Form1.cs

选择 Form1.cs + F7,打开后台代码。

冒号在 C# 中有两种特殊的含义:1.类的继承 2.接口的实现。当前类 Form1 是继承自窗体类 Form,自动的就拥有了 Form 类里面相关的属性方法

把窗体 Form1 的名字修改一下,一般主窗体命名为:FrmMain。在这里插入图片描述

FrmMain.cs 中的 partial(部分的) 和 FrmMain.Designer.cs 中的 partial
一样,不是一个类的修饰符,是限定这个类本身的组成部分,叫做部分类。当程序在编译和运行时,会把 FrmMain.cs 中的 FrmMain
类和 FrmMain.Designer.cs 中的 FrmMain 类会编译成一个类。

可以自己在资源管理上右键添加一个新的类(默认图标变成了窗体小图标,因为它就是窗体类,它是继承于 Form 类的):在这里插入图片描述

在 FrmMain.cs 的构造函数中调用窗体的设计 Form1.Designer.cs。

partial class FrmMain
{
    void test()
    {
        //如果想使用cw,在项目右键属性->应用程序输出类型->控制台应用程序
        Console.WriteLine("测试部分类");
    }
}
打开 Form1.Designer.cs 代码文件,这个文件其实就是窗体 Form1 对应的代码文件。我们在窗体 Form1 上拖拽的控件最终都要在这里生成对应的代码模块。


public FrmMain()
{
    this.test();
    InitializeComponent();
}

打开 Form1.Designer.cs 代码中 Windows窗体设计器生成的代码'这个代码块,我们看到里面有对这个窗体的代码(// Form1/FrmMain),有对按钮设计的代码(// button1)。当我们选择窗体或者按钮,在右边属性面板修改对应控件的属性时(比如:标题 Text、背景图片 Image),对应模块的代码就会发生变化。

总结:窗体由两部分构成:窗体的直接代码 Form1.cs 和设计器生成的代码 Form1.Designer.cs,一般 Form1.Designer.cs 的代码我们不需要去动它。

ps:Form1.Designer.cs 中的InitializeComponent方法,是在 Form1.cs 的构造函数中调用的。(当然你可以把 InitializeComponent 中的代码直接粘贴到 Form1.cs 的构造函数中)

窗体的常用属性

选中窗体,找到右边的属性面板。前两个按钮可以选择排序方式:按分类顺序和按字母顺序(都可以)

按字母顺序:

  • Name 属性:控件的 id,Name 属性必须唯一,不能和其他控件相冲突。
  • Text 属性:窗体的标题(win7默认靠左,win8默认在中间,win10默认靠左,可代码修改见下方)
  • MaximizeBox:控制窗体的最大化是否能被点击(双击或者在属性值框都可以修改它的值)
  • WindowState:设置窗体是否自动最大化
    • Normal:正常状态
    • Minimized:启动时窗体最小化
    • Maximized:启动时窗体最大化
  • StartPosition:确定窗体第次出现时的位置。
    • Manual:窗体的位置由location属性确定。可以自己设置相应位置,其代码如下:
      this.StartPosition = FormStartPosition.Manual;
      this.Location = new Point(100,200);//x=100,y=200
      
    • CenterScreen:窗体上当前显示居中显示,并且具有指定的窗体的大小的尺寸。适合用于一个窗口。
    • WindowsDefaultLocation:窗体定位在Windows默认位置,并且具有指定的窗体的大小的尺寸。一般默认为这个。
    • WindowsDefaultBounds:窗体定位在Windows默认位置,其边界也由Windows默认决定。
    • centerparent:窗体在其父窗体的边界内居中。适合于多个窗体,各个窗体之间嵌套。
  • FormBorderStyle:窗口的边框样式,一般在设计时就要确定下来。用户自由调节窗体的大小,会破坏窗体控件布局的美观性,所以我们要禁用窗机大小的调节。
    • None:将窗口设置为无边框、无标题栏。用户无法改变窗口的大小,也无法改变窗口显示的位置;
    • FixedSingle:将窗口设置为固定的单框(窄框),用户无法用鼠标拖动边框改变窗口的大小,但可以通过最大化按钮将窗口最大化、最小化按钮将最小化;
    • Fixed3D:将窗口设置为固定框,3D风格,用户无法用鼠标拖动边框改变窗口的大小,但可以通过最大化按钮将窗口最大化、最小化按钮将最小化。窗口的工作区具有凹陷3D效果;
    • FixedDialog:将窗口设置为固定框,对话框风格,用户无法用鼠标拖动边框改变窗口的大小,但可以通过最大化按钮将窗口最大化、最小化按钮将最小化;
    • Sizable:正常窗口样式,用户可以拖拽大小(默认选项)
    • FixedToolWindow:将窗口设置为固定框,工具窗口风格,用户无法用鼠标拖动边框改变窗口的大小;工具窗口风格的特点是:标题栏高度比较小,且只有关闭按钮
    • SizableToolWindow:和上面风格一样,只是用户可以拖拽大小
  • Icon:窗体左上角的图标。注意图片必须是 .ico 格式的图片 IconFinder
  • Size:控件的大小(以像素为单位)。有 Width 和 Height 构成(整形)
  • Font:用于显示控件中文本的字体。
  • BackgroundImage:用于该控件的背景图像。
  • BackColor:组件的背景色。

ps:选中(点击)每个属性,在下面小窗体中都有对应的解释说明。

ps:在win7和win10设置标题居中的代码方法:

public FrmMain()
{
    test();
    InitializeComponent();
    SetTitleCenter();
}

private void SetTitleCenter()
{
    // 先确随便写一个标题的内容:
    string titleMsg = "Winfrom Title";
    // 获取对Graphics对象的引用:
    Graphics g = this.CreateGraphics();
    // 根据Graphics对象来计算标题的开始居中位置:
    Double startingPoint = (this.Width / 2) - (g.MeasureString(titleMsg, this.Font).Width / 2);
    // 计算一个空字符所占像素长度:
    Double widthOfASpace = g.MeasureString(" ", this.Font).Width;
    // 定义一个空字符串来用作为标题之前做占位:
    String tmp = " ";
    // 定义一个初始占位像素:
    Double tmpWidth = 0;
    // 循环遍历,将startingPoint之前的像素都用空字符代替:
    while ((tmpWidth + widthOfASpace) < startingPoint)
    {
        tmp += " ";
        tmpWidth += widthOfASpace;
    }
    // 最后将标题字符跟换:
    this.Text = tmp + titleMsg;
}

事件驱动机制

事件的应用

计算机中的事件

  • 鼠标按下、键盘按下、鼠标移入移出移动、输入框的文本内容变化…

事件的作用

  • windows系统通过事件处理来响应用户的请求,在没有用户请求之前,事件处于静止等待状态。
    在这里插入图片描述

事件的组成
在这里插入图片描述

提前设置好一个事件(.NET平台设计) ,然后根据需要添加一个事件处理程序(开发者自定义) ,最后将“事件本身”和“处理程序”连接起来(后台自动关联)当用户操作引发事件的时候(比如单击按钮、双击图标等) ,自动调用事件处理程序完成相应任务。

事件的测试

创建一个新的 Windows 窗体应用(.Net FrameWork)项目,把默认窗体 Form1.cs 更名为 FrmMain.cs。

  • 窗体的标题可以更名为:事件的测试,把窗体的位置 StartPosition 设置为屏幕的中央。

  • 打开工具箱,随便拖拽一个按钮 Button,并修改其相关属性

  • Text:修改为“测试按钮的事件”

  • Name:相当于控件的 id,必须是唯一的,修改为“btnTest”。(其实对应的就是修改了FrmMainDesigner.cs 中的代码,在 FrmMainDesigner.cs 中给我们拖拽的按钮生成了代码并定义了变量:private System.Windows.Forms.Button button1;当我们修改了 Name 属性后,对应的变量名就发生了变化:private System.Windows.Forms.Button btnTest;这就是为什么要唯一的原因了:变量名不能重复)

  • 找到属性面板中的事件标签,选中自己要实现的事件类型。比如单击事件 Click,双击 Click 属性,就能在 FrmMain.cs 代码中帮你生成事件的回调函数。

  • 如何删除这个按钮的事件:找到属性面板中的 Click 属性,右键选择重置即可。

  • 另外一种生成事件的回调函数方式:双击窗体中的按钮,默认会生成按钮 的单击 Click 事件。(其他控件基本也是一样的,通过双击一般会生成该控件常用的事件)

  • 注意:删除事件函数时,不能只单单删除 FrmMain.cs 中的事件代码,这个时候运行是会报错的。
    遇到程序报错不要害怕,一般双击第一个报错信息(原因:有时候会有一堆错误,后面的错误有可能是因为第一个主要的错误,导致后面那一系列的错误),就能找到报错的原因及报错的位置。

这里额外解释一下这句代码 this.btnTest.Click += new System.EventHandler(this.btnTest_Click);
这里的 btnTest.Click 是一个事件委托,通过 += 多播的形式,记录所有的点击事件。这里的 this.btnTest_Click 其实就是 FrmMain.cs 代码中生成的事件方法。

在 FrmMain.cs 中的 this.btnTest_Click 方法中加入:Console.WriteLine("点击了按钮"); 或者 MessageBox.Show("点击了按钮"); 点击测试。

再次体验一下 this.btnTest.Click += new System.EventHandler(this.btnTest_Click); 这句代码。

我们再拖拽一个按钮 Button。

  • Text:标题修改为“事件断开”
  • Name:修改为“BtnBreak”
    生成单击事件(双击按钮即可)
    在 BtnBreak 的事件方法中加入:this.btnTest.Click -= new System.EventHandler(this.btnTest_Click);

我们再拖拽一个按钮 Button。

  • Text:标题修改为“事件链接”
  • Name:修改为“BtnLink”在这里插入图片描述
//事件处理程序(函数)
//参数1: 绑定事件的这个控件
//参数2: 事件对象 不同的事件,拥有不同的事件对象
private void btnTest_Click(object sender, EventArgs e)
{
    Console.WriteLine("点击了按钮");
    MessageBox.Show("点击了按钮");
}

生成单击事件(双击按钮即可)

ps:可以多点几次测试多播。

测试事件的级联响应

重点理解:sender 参数的含义及作用。

在窗体中再拖拽一个按钮 Button,命名Name为:BtnTestEvent,Text:测试事件的响应。

// FrmMain.cs
public partial class FrmMain : Form
{
    public FrmMain()
    {
        InitializeComponent();
        // 该方法可以直接从 FrmMain.Designer.cs 中剪切过来
        // 将按钮的单击事件和事件响应方法结合起来
        this.btnTest.Click += new System.EventHandler(this.btnTest_Click);
    }
    // 事件的响应方法
    private void btnTest_Click(object sender, EventArgs e)
    {
        Console.WriteLine("点击了按钮");
        MessageBox.Show("点击了按钮");
    }
    private void BtnBreak_Click(object sender, EventArgs e)
    {
        this.btnTest.Click -= new System.EventHandler(this.btnTest_Click);
    }
    private void btnLink_Click(object sender, EventArgs e)
    {
        this.btnTest.Click += new System.EventHandler(this.btnTest_Click);
    }
}

ps:在窗体上按住 Ctrl + 拖拽某个控件,可以快速生成控件。

再生成三个按钮:

  • 命名Name为:btnAndy,Text:Andy老师
  • 命名Name为:btnCarry,Text :Carry老师
  • 命名Name为:btnCoco,Text:Coco老师

自己来实现一个单击事件:
给三个按钮添加同一个事件响应方法。

常用控件的事件

  • 窗体的重要事件:
    • Load :窗体加载事件(应用较少)
    • FormClosing:窗体关闭之前发生的事件
    • FormClosed:窗体关闭以后发生的事件
  • 文本框的重要事件:
    • TextChanged :文本框内容改变事件
    • KeyPress :用户按下某键并释放的时候发生的事件
    • MouseLeave :当鼠标离开文本框的时候发生
  • 下拉框的重要事件:
    • SelectedIndexChanged :当用户选择的下拉项改变的时候发生

事件响应的公共方法

private void btnTeacher_Click(object sender,EventArgs e)
{
    // sender
    // string text = (sender as Button).Text;
    string text = ((Button)sender).Text;
    MessageBox.Show(text);
}
public FrmMain()
{
    InitializeComponent();
    // 该方法可以直接从 FrmMain.Designer.cs 中剪切过来
    // 将按钮的单击事件和事件响应方法结合起来
    this.btnTest.Click += new System.EventHandler(this.btnTest_Click);
    // 给三个按钮添加同一个事件响应方法
    this.btnAndy.Click += new System.EventHandler(this.btnTeacher_Click);
    this.btnCarry.Click += new System.EventHandler(this.btnTeacher_Click);
    this.btnCoco.Click += new System.EventHandler(this.btnTeacher_Click);
}

消息提示的用法

为什么要使用消息框

  • 显示消息
  • 向用户请求信息。在这里插入图片描述在这里插入图片描述

合理使用消息提示框,因为每次弹出都需要用户去做处理,弹出的频率和次数过高,用户也是会感觉很反感的。现在大多数的提示后可以在界面上直接提示,比如:登录注册时,直接在文本框的后面显示红色小字提示。

使用

在窗体上拖拽一个按钮(在控件上直接右键找到属性菜单转到设置面板):Name: Text:测试消息框。
双击按钮,生成事件的响应方法: btnTestMsg_Click。方法内写上:MessageBox.Show(“Test”);

参数格式

MessageBox.Show(String, String, MessageBoxButtons, MessageBoxIcon, MessageBoxDefaultButton)

官方: MessageBox.Show 官方文档

MessageBoxButtons 属性 样式

在这里插入图片描述

MessageBoxIcon属性 样式

在这里插入图片描述

示例

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace _03_消息提示
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // 参数1: 提示信息
            // MessageBox.Show("弹出框");
            // 参数2:设置弹出框的标题
            // MessageBox.Show("弹出框", "窗口标题");
            // 参数3:设置一个MessageBoxButtons类型的枚举
            // 参数4:设置图标
            // 参数5:设置默认第几个按钮是默认选中的
            // MessageBox.Show("弹出框", "窗口标题", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button2);
            // 返回值
            // 返回值是枚举类型,可以通过判断枚举的类型来进行下一步操作
            DialogResult res = MessageBox.Show("弹出框", "窗口标题", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button2);
            if (res == DialogResult.Cancel)
            {
                // 取消操作
            }
            else
            {
                // 确认操作
            }
            Console.WriteLine(res);
        }
    }
}

觉得本篇文章写的还不错可以点赞,收藏,关注。主页还有21天速通C#教程欢迎订阅!!!在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

入门必读!如何实现适老化设计?大广赛题目解析!

早在 2021 年 4 月工业和信息化部办公厅发布了《关于进一步落实互联网应用老化和无障碍改造专项行动的通知》。根据联合国经济和社会事务部发布的2022年世界人口展望报告&#xff0c;全球人口展望报告&#xff0c;全球人口展望报告 65 预计2022年以上人口比例将达到2022年以上年…

2021-08-06

yarn的简介&#xff1a; Yarn是facebook发布的一款取代npm的包管理工具。 yarn的特点&#xff1a; 速度超快。 Yarn 缓存了每个下载过的包&#xff0c;所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率&#xff0c;因此安装速度更快。超级安全。 在执行代码…

哈希表(Hash Table) -- 用数组模拟--字符串前缀哈希

本文用于个人算法竞赛学习&#xff0c;仅供参考 目录 一.什么是哈希表 二.哈希函数中的取模映射 三.拉链法&#xff08;数组实现&#xff09; 四.拉链法模板 五.开放寻址法 六.开放寻址法模板 七.字符串前缀哈希 九.字符串前缀哈希 模板 十.题目 一.什么是哈希表 哈希表&…

python print用法

1.输出字符串换行 输出结果会换行&#xff0c;默认自带换行 print(111) print(0) 2.末尾插入字符串或去除换行 末尾只能插入字符串&#xff0c;不能是其他类型 print(111,end0) print(0) 3.变量&#xff0c;字符串混合输入 没有必要什么都学&#xff0c;好用的常用的学一…

基于JavaWeb SSM mybatis 私人健身房系统管理平台设计和实现以及文档报告

基于JavaWeb SSM mybatis 私人健身房系统管理平台设计和实现以及文档报告 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞…

ClamAV:Linux服务器杀毒扫描工具

Clam AntiVirus&#xff08;ClamAV&#xff09;是免费而且开放源代码的防毒软件&#xff0c;软件与病毒码的更新皆由社群免费发布。ClamAV在命令行下运行&#xff0c;它不将杀毒作为主要功能&#xff0c;默认只能查出系统内的病毒&#xff0c;但是无法清除。需要用户自行对病毒…

Linux中查看文件内容的命令

文章目录 一、七类常见的Linux的文件二、显示命令三、分页显示四、显示文件前后内容五、压缩、解压缩六、补充 一、七类常见的Linux的文件 字符文件类型-普通文件&#xff0c;包括纯文本文件、二进制文件、各种压缩文件等。在find命令中&#xff0c;type 选项中用 f来表示d目录…

git学习——tags、release、drop commit

最近一直都在持续学习git相关内容&#xff0c;越来越发现git是一个十分适合大型项目和团队协作进行开发的工具&#xff0c;掌握好了对于我们参与项目维护和开发产品帮助很大&#xff0c;所以要不断持续学习git。 tags & releases tag的创建 当我们在git版本控制中遇到了…

Docker搭建LNMP环境实战(09):安装mariadb

1、编写mariadb部署配置文件 在文件夹&#xff1a;/mnt/hgfs/dockers/test_site/compose下创建文件&#xff1a;test_site_mariadb.yml&#xff0c;内容如下&#xff1a; version: "3.5" services:test_site_mariadb:container_name: test_site_mariadbimage: mari…

【Go】四、包名、访问范围控制、标识符、运算符

文章目录 1、_2、包名3、命名大小影响可访问范围4、运算符5、获取终端输入 1、_ 下划线"_"本身在Go中是一个特殊的标识符&#xff0c;称为空标识符用于忽略某个值 1&#xff09;忽略导入的没使用的包 2&#xff09;忽略某个返回值 2、包名 main包是程序的入口包&a…

【MATLAB第103期】#源码分享 | 基于MATLAB的LIME可解释性线性分类预测模型,2020b以上版本

【MATLAB第103期】#源码分享 | 基于MATLAB的LIME可解释性线性分类预测模型&#xff0c;2020b以上版本 一、模型介绍 LIME&#xff08;Local Interpretable Model-agnostic Explanations&#xff09;是一种用于解释复杂机器学习模型预测结果的算法。它由Marco Ribeiro、Sameer…

设计模式25--策略模式

定义 案例一 案例二 优缺点

AI版青花瓷

3月22日&#xff0c;Suno正式上线V3版本&#xff0c;很多人都称之为AI音乐的"ChatGPT"时刻&#xff0c;从此人人都可以是作曲家&#xff0c;先来听下最近霸榜的只因你太美baby来感受下它的厉害之处&#xff08;我已经被洗脑了哈哈&#xff09; 1. Suno 介绍 根据Sun…

每日学习笔记:C++ STL算法分类

非更易型 更易型 移除型 变序型 排序型 已排序区间算法 数值型算法

Elasticsearch的倒排索引是什么?

文章目录 什么是ES&#xff1f;什么是倒排索引&#xff1f;为什么叫做倒排索引&#xff1f;分词器的使用 什么是ES&#xff1f; Elasticsearch是基于 Apache Lucene【lusen】的搜索引擎&#xff0c;支持Restful API风格【可以使用常见的HTTP请求来访问】&#xff0c;并且搜索速…

抖店如何上架商品?这些细节要注意!否则罚款了别怪我没提醒你!

哈喽~我是电商月月 有朋友私信我一个问题&#xff0c;说是他上架商品后&#xff0c;被判类目错放了 情节严重扣了全部的2000块保证金 申述后没通过&#xff0c;还能要回来吗&#xff1f; 其实这种情况你确实是有错放的现象&#xff0c;误判的可能性很小&#xff0c;所以申述…

metasploit使用及内网笔记

1 基本操作 Metasploit就是一个漏洞框架。它的全称叫做The Metasploit Framework&#xff0c;简称叫做MSF。Metasploit作为全球最受欢迎的工具&#xff0c;不仅仅是因为它的方便性和强大性&#xff0c;更重要的是它的框架。它允许使用者开发自己的漏洞脚本&#xff0c;从而进行…

进销存管理系统:食品批发零售迈向数字化未来-亿发

随着消费逐步复苏&#xff0c;食品批发零售行业也迎来了客流的回升&#xff0c;实体店重新焕发了生机。然而&#xff0c;随着数字化时代的来临&#xff0c;传统的食品批发零售企业面临着新的挑战和机遇。些企业正积极实施数字化转型&#xff0c;通过布局线上线下多业态的融合发…

Linux系统使用Docker部署MeterSphere并实现公网访问本地测试平台

文章目录 前言1. 安装MeterSphere2. 本地访问MeterSphere3. 安装 cpolar内网穿透软件4. 配置MeterSphere公网访问地址5. 公网远程访问MeterSphere6. 固定MeterSphere公网地址 前言 MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试和性能测试等功能&am…

Linux:查询类型的命令type

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 type命令是Linux中一个查询类型的命令&#xff0c;它可以查询name是alias别名、keyword关键字、function函数名、builtin内建命令名&#xff08;这很有用&#xff09;或…