第6章 目录与文件操作

目录

    • 第6章 目录与文件操作
      • 6.1 目录和文件管理
        • 6.1.1 Environment类和DriveInfo类
        • 6.1.2 Path类
        • 6.1.3 目录管理
        • 6.1.4 文件管理
      • 6.2 文件的读写
        • 6.2.1 文件编码
        • 6.2.2 文本文件的读写
        • 6.2.3 StreamReader类和StreamWriter类
        • 6.2.4 二进制文件的读写
    • 第7章 WPF应用程序入门
      • 7.1 WPF应用程序和XAML标记
      • 7.2 窗口和对话框
        • 7.2.1 WPF窗口
        • 7.2.2 窗口的外观和行为
        • 7.2.3 对话框
        • 7.2.4 WPF页和页面导航
      • 7.3 颜色
      • 7.4 形状
      • 7.5 画笔
        • 7.5.1 画笔分类
        • 7.5.2 纯色画笔(SolidColorBrush)
        • 7.5.3 线性渐变画笔(LinearGradientBrush)
        • 7.5.4 径向渐变画笔(RadialGradientBrush)
        • 7.5.5 图形画笔(ImageBrush)
      • 7.6 属性
      • 7.7 事件
    • 第8章 WPF控件
      • 8.1 控件模型和内容模型
        • 8.1.1 WPF控件模型
        • 8.1.2 WPF内容模型
      • 8.2 常用布局控件
        • 8.2.1 WPF的布局分类
      • 8.3 常用基本控件
      • 8.4 菜单、工具条和状态条

6.1 目录和文件管理

6.1.1 Environment类和DriveInfo类

Environment类:使用Environment类可检索与操作系统相关的信息

常用静态属性

1.CurrentDirectory属性:获得程序集所在的文件夹;2.OSVersion属性:获取操作系统版本(PC,PDA均支持);3.NewLine属性:获取当前环境换行符(PC支持);4.Version属性:显示公共语言运行时版本的对象;5.GetLogicalDrives方法:列举本地硬盘驱动器(PC支持);6.GetFolderPath方法:获取系统保留文件夹路径(PC,PDA均支持)

DriveInfo类:使用DriveInfo可以确定当前可用的驱动器以及这些驱动器的类型,还可以通过查询来确定驱动器的容量和剩余空间

DriveInfo[] allDrives = DriveInfo.GetDrives( );
foreach (DriveInfo d in allDrives)
{Console.WriteLine("Drive {0}", d.Name);Console.WriteLine("文件类型: {0}", d.DriveType);if (d.IsReady == true){Console.WriteLine("卷标: {0}", d.VolumeLabel);Console.WriteLine("文件系统: {0}", d.DriveFormat);Console.WriteLine("当前用户可用空间:{0} bytes", d.AvailableFreeSpace);Console.WriteLine("总可用空间:{0} bytes", d.TotalFreeSpace);Console.WriteLine("驱动器总容量:{0} bytes ", d.TotalSize);}
}

6.1.2 Path类

Path类用于对包含文件或目录路径信息的String实例执行操作,常用方法:

1.GetDirectoryName方法:得到文件的文件夹路径;2.GetExtension方法:从文件路径字符串中得到文件的扩展名;3.GetFileName方法:从路径字符串中得到文件名(带扩展名);4.GetFileNameWithoutExtension方法:从路径字符串中得到文件名(不带扩展名);5.GetFullPath方法:从文件字符串中得到包括文件名和扩展名的全路径名;

6.1.3 目录管理

Directory类和DirectoryInfo类均可用于对磁盘和目录进行管理,如复制、移动、重命名、创建、删除目录等

两个类的不同点在于DirectoryInfo类提供了更详细的功能,而且必须被实例化后才能使用,而Directory类则只提供了常用的静态方法

Directory类提供的静态方法:

1.CreateDirectory:创建指定路径中的所有目录;2.Delete:删除指定的目录;3.Move:将文件或目录及其内容移到新位置;4.Exists:判断目录是否存在;5.GetCurrentDirectory:获取应用程序的当前工作目录

6.1.4 文件管理

System.IO命名空间中文件操作类:(1)File类;(2)FileInfo类

相同点:都能完成对文件的复制、移动、重命名、创建、打开、删除和追加到文件操作

不同点:FileInfo类提供实例化后的属性、方法,File 只提供静态方法

用法与Directory和DirectoryInfo相似

复制文件: File.Copy(path1, path2, true);,true表示如果目标文件已存在,就直接覆盖

获取或设置文件属性

File类提供了SetAttributes方法和GetAttributes方法。用来获取或设置文件的各种属性。方法原型为:

public static void SetAttributes(string path, FileAttributes fileAttributes)
public static FileAttributes GetAttributes(string path)

在SetAttributes方法中,使用FileAttributes枚举来获取或设置目录或文件的属性,程序中可以利用按位操作“&”、“|”等设置或获取单个属性

“&:按位与;”|":按位或;

判断某个路径是目录还是文件

if ((File.GetAttributes(path) & FileAttributes.Directory) == FileAttributes.Directory){Console.WriteLine("{0}是目录", path);}
else{Console.WriteLine("{0}是文件", path);}

6.2 文件的读写

在System.IO命名空间中,提供了多种类用于进行数据文件和数据流的读写操作:

1.文件编码,提供多种编码;2.文本文件的读写;3.二进制文件的读写

6.2.1 文件编码

常见的文件编码方式:ASCII、Unicode、UTF8、ANSI、GB2312、GB18030

System.TextEncoding类:表示字符编码,常用有

Encoding.Default 表示操作系统的当前ANSI编码
Encoding.Unicode Unicode编码
Encoding.UTF8 UTF8编码

注意打开文件时指定的编码格式一定要和保存文件时所用的编码格式一致,否则看到的可能就是一堆乱码

6.2.2 文本文件的读写

ReadAllText方法和AppendAllText方法:

string path = @“E:\ls\MyTest.txt";
if (File.Exists(path))
{File.Delete(path);
}
string appendText = "你好。" + Environment.NewLine;
File.AppendAllText(path, appendText,Encoding.Default);
string readText = File.ReadAllText(path,Encoding.Default);
Console.WriteLine(readText);

ReadAllLines方法和WriteAllLines方法

string path = @"c:\temp\MyTest.txt";
if (File.Exists(path))
{File.Delete(path);
}
string[] appendText ={ "单位","姓名","成绩"};
File.WriteAllLines(path, appendText,Encoding.Default);
string[] readText = File.ReadAllLines(path,Encoding.Default);
Console.WriteLine(string.Join(Environment.NewLine, readText));

6.2.3 StreamReader类和StreamWriter类

流是字节序列的抽象概念:提供了连续的字节流存储空间,也是进行数据读取操作的基本对象

流有如下几种操作:

  • 读取:从流中读取数据到变量中
  • 写入:把变量中的数据写入到流中
  • 定位:重新设置流的当前位置,以便随机读写

注意:StreamReader、StreamWriter的默认编码为UTF-8

StreamReader类

try
{using (StreamReader sr = new StreamReader("TestFile.txt")){String line;while ((line = sr.ReadLine( )) != null){Console.WriteLine(line);}}
}
catch (Exception e)
{Console.WriteLine("The file could not be read:");Console.WriteLine(e.Message);
}

StreamWriter类

try
{using (StreamWriter sw = new StreamWriter("TestFile.txt")){sw.WriteLine("First line");sw.WriteLine("The date is: {0}", DateTime.Now);}
}
catch (Exception e)
{Console.WriteLine("The file could not be write:");Console.WriteLine(e.Message);
}

6.2.4 二进制文件的读写

System.IO.BinaryReader和BinaryWriter类:按二进制模式读写文件

  1. BinaryReader:ReadByte、ReadBoolean、ReadInt、ReadInt16、ReadDouble和ReadString等
  2. BinaryWriter:提供了与BinaryReader对应的多种重载的Write方法

第7章 WPF应用程序入门

7.1 WPF应用程序和XAML标记

WPF:WPF是一种“以属性为核心”的编程模型。主要用于开发C/S客户端程序(比如QQ、360安全卫士、飞信、股票软件、……等),WPF基于DirectX和GPU加速来实现的图形界面显示技术,WinForm的界面是全部用C#代码实现,WPF的界面除了用C#来实现以外,还可以用XAML来实现

APP类:App类的基类为Application类,该类主要定义在整个应用程序范围内都可以使用的资源和属性

程序的启动:程序从Main方法开始启动,但该方法被隐藏了,改为让开发人员通过App.xaml文件来设置

<Application x:Class="Source.App"…… StartupUri="MainWindow.xaml"><Application.Resources>……</Application.Resources>
</Application>

App类常用的属性、方法和事件

StartupUri属性:在App.xaml中设置;

MainWindow属性:当App的Shutdown模式为MainWindow时才需要在App.xaml.cs的构造函数中设置此属性(指定谁是主窗口):

public partial class App : Application
{public App()  {    //在此处设置......    }
}

其他属性:在任何一个窗口或页面中都可以获取或设置

WPF应用程序的关闭模式

  • 可以在App.xaml中通过ShutdownMode指定关闭模式:
 <Application x:Class="Source.App" ……ShutdownMode="OnMainWindowClose"StartupUri="MainWindow.xaml">

ShutdownMode屬性的取值:1.OnLastWindowClose(默认):当关闭最后一个窗口时自动关闭应用程序;2.OnMainWindowClose:当关闭主窗口时自动关闭应用程序;3.OnExplicitShutdown:仅当显式调用Shutdown方法时,才关闭应用程序;

  • 不论哪种关闭模式,只要调用App.Current.Shutdown()方法,都会立即关闭应用程序

XMAL命名空间和x:前缀编程构造:声明XAML命名空间解决了XAML标记和C#代码共享的问题

  1. 根元素和XAML命名空间
  • 一个XAML文件(扩展名为.xaml的文件)只能有一个根元素
  • x:Class用于将XAML和代码隐藏类关联
  • xmlns特性声明XAML默认的命名空间
  1. x:前缀编程构造
  • 根元素的xmlns:x用于XAML命名空间映射,目的是为了通过x:前缀声明可被其他XAML和C#代码引用的对象
  • 控件的Name特性:声明的目的是为了在代码隐藏类中引用它
  • 只有在模板、自定义控件、动画等特殊场合才需要用x:Name特性
  1. 在XAML中映射自定义命名空间
  • 在XAML中引用自定义对象,必须在XAML中映射自定义命名空间

补充:在XAML中自定义命名空间

<Page x:Class="Source.ch07.Page1"…… xmlns:my="clr-namespace:Source.ch07"…… 
Title="ch07Page1"><StackPanel>……<my:UserControl1 x:Name="uc1" /></StackPanel>
</Page>
//如果将x:Name改为Name,在代码隐藏类中将看不到uc1
//StackPanel:纵向(默认)或横向堆叠布局

XAML基本语法

概念:XAML的语法与HTML的语法非常相似,即都是利用元素、特性(Attribute)和属性(Property)来描述元素对象的各种要素,XAML中的对象名、特性名以及属性名都区分大小写

(1)对象元素语法
对象是指类的实例,在XAML中用对象元素来描述。例如:

(2)特性语法(最常用)
用特性(Attribute)来描述对象的属性(Property),特性名和特性值之间用赋值号(=)分隔,特性的值始终用字符串来指定,引号默认用双引号,也可以是单引号,原则是“值”两边的引号必须匹配 。例如:

特性语法还可用于描述事件成员 。例如:
Click Me!

(3)属性语法:有时仅仅用特性语法无法来描述对象的某些属性,此时可以用属性语法来描述。一般格式为:
<类名.属性名>……</类名.属性名>
例如:

<Button Background="Blue" Foreground="Red"Content="右击观察快捷菜单" Margin="73,108,74,115"><Button.ContextMenu><ContextMenu><MenuItem>快捷菜单项1</MenuItem><MenuItem>快捷菜单项2</MenuItem></ContextMenu></Button.ContextMenu>
</Button> 

(4)集合语法:如果某个属性采用集合类型,可以使用集合语法 。例如(这段代码是利用【属性】窗口设置后自动生成的):

<Window.Background><LinearGradientBrush><LinearGradientBrush.GradientStops><GradientStop Offset="0.0" Color="Red" /><GradientStop Offset="1.0" Color="Blue" /></LinearGradientBrush.GradientStops></LinearGradientBrush>
</Window.Background>

(5)XAML内容属性:内容属性的用途是为了简化标记,或者用于嵌套子元素。例如:
This is a Text Box
相当于:

(6)内容属性和集合语法组合

<StackPanel><Button>按钮1</Button><Button>按钮2</Button>
</StackPanel>

(7)类型转换器
将用字符串进行设置的特性值转换为其他对象类型或基元值。例如:

<Button Margin="10,20,30,40" Content="确定"/>  
//相当于:
<Button Content="确定"><Button.Margin><Thickness Left="10" Top="20" Right="30" Bottom="40"/></Button.Margin>
</Button>

XAML中的空白处理

XAML中的空白字符包括空格、换行符、制表符等,默认情况下,XAML处理器会将所有空白字符自动转换为空格

注意:默认情况下,连续的多个空格将被替换为“一个”空格

如果希望保留文本字符串中的多个空格,可以在该元素的开始标记内添加xml:space=“preserve”特性,但是注意要避免在根级别指定该特性,否则会影响XAML处理的性能

7.2 窗口和对话框

7.2.1 WPF窗口

窗口分类:WPF窗口由非工作区和工作区两部分构成 ,非工作区主要包括图标、标题、系统菜单、按钮和边框

通过【WindowStyle】属性可设置窗口样式:

1.标准窗口(SingleBorderWindow,默认);

2.无标题窗口(None):只有工作区部分;

3.工具窗口(ToolWindow):非工作区的右上角只有关闭按钮,不包括最小化、最大化和还原按钮;

4.通知图标(NotifyIcon);

窗口生存周期:(从第一次打开窗口到关闭窗口经历的一系列过程)

激活窗口

活动窗口:当前正在捕获用户输入(如键盘或鼠标等)的窗口

首次打开一个窗口时,该窗口便成为活动窗口。当窗口变为活动窗口时,会引发Activated事件 --> 当前活动窗口停用时引发Deactivated事件 --> 利用IsActive属性可检查窗口是否处于活动状态

创建并显示新窗口:在C#代码中调用Show方法(无模式窗口)或者ShowDialog方法(模式窗口)显示窗口,对于“无模式”窗口,调用Hide方法可将其隐藏

关闭窗口:直接调用Close方法即可关闭当前打开的窗口,窗口关闭时会引发两个事件:Closing事件和Closed事件

窗口关联:通过设置子窗口的Owner属性让该子窗口附属于其父窗口

Window ownedWindow = new Window();
ownedWindow.Owner = this;
ownedWindow.Show(); 

7.2.2 窗口的外观和行为

外观:指用户看到的窗口表现形式,行为:指用户与窗口交互的方式

窗口大小:窗口大小由Width、MinWidth、MaxWidth、Height、MinHeight、MaxHeight以及SizeToContent等多个属性确定,检测窗口当前宽度和高度:应该检查 ActualWidth和ActualHeight属性

窗口位置:通过Left和Top属性获取或更改窗口相对于屏幕坐标的x和y位置,WindowStartupLocation属性设置窗口第一次显示时的初始位置,枚举值有:Manual(默认)、CenterScreen、CenterOwner

z顺序和最顶层窗口:最顶层z顺序中的窗口总是位于正常z顺序中的窗口之上,将窗口的Topmost属性设置为true可以使该窗口位于最顶层z顺序中

7.2.3 对话框

消息框( MessageBox类)

调用静态Show方法显示消息框,常用重载形式有:

  • public static DialogResult Show(string text)
  • public static DialogResult Show(string text, string caption)
  • public static DialogResult Show(string text, string caption, MessageBoxButton buttons,MessageBoxImage icon)

参考链接:

C# McssageBox:消息框

通用对话框

参考链接:

C#界面设计之通用对话框的使用

自定义对话框:自定义对话框一般用于显示和收集特定的信息,分为模式对话框(调用ShowDialog方法显示)和非模式对话框(调用Show方法显示)

7.2.4 WPF页和页面导航

要点:(1)在WPF应用程序中,既可以用窗口(Window)设计界面,也可以用页(Page)设计界面;(2)用Page时,可通过Frame或者NavigationWindow来承载

在Frame中承载Page(常用):在Frame元素中将其Source属性设置为导航到的页 ,在这种方式下,既可以用XAML加载页并实现导航,也可以用C#代码来实现

//用XAML实现
<Frame Name="frame1" NavigationUIVisibility="Visible"  Source="Page1.xaml" Background="#FFF9F4D4" />

//用C#实现
frame1.Source = new Uri("Page1.xaml", UriKind.Relative);

7.3 颜色

任何一种颜色都是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化和它们相互之间的叠加来得到的

通过Alpha通道可控制颜色的透明度

常用颜色格式:#aarrggbb

<StackPanel><StackPanel.Resources><Style TargetType="Label"><Setter Property="Margin" Value="0 5" /><Setter Property="Content" Value="Hello" /><Setter Property="Foreground" Value="White" /></Style></StackPanel.Resources><Label Background="#FF5E7C4C" /><Label Background="#FF1A36E6" /><Label Background="#FFE63F1A" />
</StackPanel>

Brushes类和Colors类

在System.Windows.dll中的System.Windows.Media命名空间下的Brushes类和Colors类都利用静态属性提供了预定义的颜色,这些颜色在各种应用程序中都可以使用。如设置控件的前景色、背景色、边框色等

Brushes类的C#语法(隐藏类,sealed表示该类不能被继承):public sealed class Brushes

Colors类的C#语法:public sealed class Colors

这两个类都只能通过他们提供的静态属性获取或设置颜色

Color结构

该结构通过A(透明度)、R(红色通道)、G(绿色通道)和B(蓝色通道)的组合来创建各种自定义的颜色,一般形式为:“#rrggbb”或者“#aarrggbb”

其中#表示十六进制,aa表示透明度,rr表示红色通道,gg表示绿色通道,bb表示蓝色通道

7.4 形状

要点:(1)形状的基类是Shape类,其他类(Ellipse、Line、Path、Polygon、Polyline 和 Rectangle)都是该类的扩充类;(2)Canvas 面板是用于创建复杂绘图的特别理想的选择,因为它支持对其子对象的绝对定位

形状控件共有的属性

  • Stroke:绘制形状轮廓
  • StrokeThickness:指定形状轮廓的粗细
  • Fill:填充形状的内部
  • Stretch:None(不拉伸)、 Fill(拉伸、不保留长宽比);Uniform(尽可能拉伸,并保留其原始长宽比);UniformToFill(完全拉伸,并保留其原始长宽比)

矩形:Rectangle类用于绘制矩形

<Canvas><Rectangle Width="100" Height="100" Fill="Blue" Stroke="Red" Canvas.Top="20" Canvas.Left="20" StrokeThickness="3" />
</Canvas>

椭圆:Ellipse类用于绘制椭圆,当Width和Height相等时,绘制的实际上是一个圆

<Canvas Background="LightGray"> <Ellipse Height="75" Width="75"Fill="#FFFFFF00" StrokeThickness="5" Stroke="#FF0000FF"/>
</Canvas>

其他基本形状

  1. Line(直线)
<Line X1="10" Y1="10" X2="50" Y2="50" Stroke="Black" StrokeThickness="4" /> 
  1. PolyLine(多条依次相连的直线)
<Canvas><Polyline Points="50,25 0,100 100,100 50,25"Stroke="Blue" StrokeThickness="10" Canvas.Left="75" Canvas.Top="50" />
</Canvas> 
  1. Polygon(多边形)该控件和PolyLine用法相似,但它会自动将最后1个点和第1个点连起来
<Canvas><Polygon Points="300,200 400,125 400,275" Stroke="Purple" StrokeThickness="2"><Polygon.Fill><SolidColorBrush Color="Blue" Opacity="0.4"/></Polygon.Fill></Polygon> 
</Canvas>   

7.5 画笔

在WPF应用程序中,画笔(Brush)是所有控件都具有的基本功能。最常见的是利用画笔设置控件的前景色、背景色,填充渐变色、图像和图案

7.5.1 画笔分类

(1)画笔的所有类型都在System.Windows.Media命名空间下
(2)Brush类是各种画笔的抽象基类,其他画笔类型都是从该类继承
(3)常用画笔类型:

  • ​ 纯色画笔:单一颜色
  • ​ 渐变画笔:包括线性渐变、径向渐变
  • ​ 图像画笔:可将图像作为画笔

(4)在XAML或者文档大纲中选中某个控件后,可直接利用【属性】窗口设置画笔类型

7.5.2 纯色画笔(SolidColorBrush)

创建SolidColorBrush实例后,可通过Color类提供的方法设置颜色

SolidColorBrush b = new SolidColorBrush();
b.Color = Color.FromArgb(0xFF, 0xFF, 0x0, 0x0);
button1.Background = b; 

7.5.3 线性渐变画笔(LinearGradientBrush)

(1)含义:沿一条直线(即渐变轴)定义的渐变绘制区域
(2) 用 StartPoint 和 EndPoint 设置渐变的起点和终点,用GradientStop设置渐变停止点的颜色、偏移量
(3)如果不指定渐变方向,默认创建对角线渐变。

<StackPanel><Rectangle Width="200" Height="100"><Rectangle.Fill><LinearGradientBrush StartPoint="0,0" EndPoint="1,1"><GradientStop Color="Yellow" Offset="0.0" /><GradientStop Color="Red" Offset="0.25" /><GradientStop Color="Blue" Offset="0.75" /><GradientStop Color="LimeGreen" Offset="1.0" /></LinearGradientBrush></Rectangle.Fill></Rectangle>
</StackPanel> 

7.5.4 径向渐变画笔(RadialGradientBrush)

(1) 含义:以一个椭圆为边界,从椭圆中心点开始由内向外逐渐填充渐变的颜色

(2)画笔由原点(GradientOrigin)、中心点(Center)和辐射到的范围(RadiusX、RadiusY)来定义

<StackPanel><Rectangle Width="200" Height="100"><Rectangle.Fill><RadialGradientBrush GradientOrigin="0.5,0.5" Center="0.5,0.5 " RadiusX="0.5" RadiusY="0.5"><GradientStop Color="Yellow" Offset="0" /><GradientStop Color="Red" Offset="0.25" /><GradientStop Color="Blue" Offset="0.75" /><GradientStop Color="LimeGreen" Offset="1" /></RadialGradientBrush></Rectangle.Fill ></Rectangle>
</StackPanel>  

7.5.5 图形画笔(ImageBrush)

(1) 含义:使用 ImageSource 绘制一个区域。
(2)XAML示例

<Rectangle Width="75" Height="75"><Rectangle.Fill><ImageBrush ImageSource=“images/p1.jpg" /></Rectangle.Fill>
</Rectangle>

(3)C#示例

Rectangle r = new Rectangle{Width = 75, Height = 75};
ImageBrush b = new ImageBrush();
b.ImageSource = new BitmapImage(new Uri(@“images\p1.jpg", UriKind.Relative));
r.Fill = b;

7.6 属性

CLR属性:用get和set访问器实现的属性称为CLR属性

依赖项属性( DependencyProperty )

  • 封装CLR属性,目的是为了用XAML描述这些属性
  • 主要用于样式、主题、数据绑定、动画、元数据重写、属性值继承以及WPF设计器集成等情况
  • 每个CLR属性都有与其对应的依赖项属性,反之亦然

附加属性:在某个子元素上指定其父元素的属性,用于设置子元素相对于父元素的布局方式(例如停靠方式等)

利用样式资源控制控件的属性

(1)分类:内联式、嵌入式(用框架元素样式和应用程序样式实现)和外部链接式(用资源字典实现)
(2)如果某些控件具有相同的属性,在其父级元素的资源中用Style单独设置这些属性的样式以后,这些控件就会自动应用这些样式

7.7 事件

**在XAML中注册事件 **:在XAML中,声明事件的一般形式为 事件名=“事件处理程序名”
或者: 子元素类型名.事件名=“事件处理程序名”

一般通过事件列表附加事件

<Button Name="Btn1" Click="Btn1_Click"/>

在C#代码中注册事件:利用+=注册事件,利用-=取消注册

public MainWindow(){InitializeComponent();Button1.MouseDoubleClick += Button1_MouseDoubleClick;}
void Button1_MouseDoubleClick(object sender, MouseButtonEventArgs e){//事件处理代码}

事件处理程序中的参数:所有WPF事件处理程序默认都提供两个参数

private void OkButton_Click(object sender, RoutedEventArgs e) 

参数sender包括附加该事件的对象,参数e是数据源的相关数据

事件使用要点

(1)在WPF中,绝大部分情况下都是用e.Source来判断事件源是谁
(2)大部分情况下通过【属性】窗口直接设置某元素的事件
(3)如果具有相同类型的元素很多,而且这些元素都会引发某个相同的事件,此时可以在其父元素中声明附加事件(可简化事件声明的次数)

事件路由:直接、冒泡和隧道三种方式

1)直接路由: 直接(Direct)是指该事件只针对元素自身,而不会再去路由到其他元素

2)冒泡 :冒泡(Bubble)是指从事件源依次向父元素方向查找,直到查找到根元素为止,目的是搜索父元素中是否包含针对该元素的附件事件声明

利用“冒泡”可在某个父元素上一次性地为多个子元素注册同一个事件:

<StackPanel …… Button.Click="Button_Click"  ……><Button Name="YesButton" Content="" Width="54" /><Button Name="NoButton" Content="" Width="65"/><Button Name="CancelButton" Content="取消" Width="64"/>
</StackPanel>

3)隧道路由 :隧道(Tunnel)是指从根元素开始向子元素依次路由,直到查找到事件源为止,它与冒泡路由刚好是相反的过程

<Window ……><Border ……><StackPanel ……Button.PreviewMouseMove="Button_PreviewMouseMove"……><Button Name="YesButton" Content="" Width="54" /><Button Name="NoButton" Content="" Width="65"/><Button Name="CancelButton" Content="取消" Width="64"/></StackPanel></Border>
</Window> 

鼠标事件

RoutedEventArgs的Source属性和OriginalSource属性:

RoutedEventArgs的Source属性:判断是哪个元素引发的事件

OriginalSource属性:一般用于判断是该元素中的哪个子项引发的事件

1)获取鼠标的位置 :GetPosition(IInputElement)方法:获取鼠标光标所在点相对于指定控件左上角的位置

参数取值:

  • null或this:相对于根元素内容区域的坐标
  • sender:基于针对其处理事件的对象的内部坐标进行计算
  • 指定元素对象:相对于指定对象的左上角

2)保存和恢复控件状态 :每个控件都有一个Object类型的Tag属性,利用这个属性,可以保存和恢复控件变化前后的多个状态。

3)设置鼠标的光标形状 :Mouse类中有一个OverrideCursor属性,利用该属性可动态改变光标的形状

Mouse.OverrideCursor = Cursors.Hand;  

键盘事件:要使某个控件接受键盘事件,必须将该控件的Focusable属性设置为true

传递的事件名功能描述
KeyDown当按下键盘时产生
KeyUp当释放键盘时产生
GotKeyboardFocus当元素获得输入焦点时产生
LostKeyboardFocus当元素失去输入焦点时产生

触摸板事件

在WPF应用程序中,可以同时接收来自多个触控的输入,并在发生触控时(如食指双击、手势移动、拇指和食指分开放大、拇指和食指并拢缩小等)引发相应的事件

第8章 WPF控件

8.1 控件模型和内容模型

WPF控件两种最基本的模型:控件模型、内容模型

8.1.1 WPF控件模型

组成要素

  • 内容:指显示控件内容的区域,可以是文本、图像或其他控件元素

  • Padding:内边距。即边框和内容之间的矩形环区域

  • 边框:即内边距和外边距之间的黑色矩形环区域

  • Margin:外边距。指边框和图中虚线包围的矩形环区域,表示该控件和其他控件之间的距离,常用有两种形式,一种是用一个值来描述,另一种是按照“左、上、右、下”的顺序用4个值分别描述。例如下面的代码表示Button2按钮的左、上、右、下的外边距分别是0、10、0、10

  • 内边距(Padding):控制元素内部与其子元素或文本之间的间距,其用法和Margin属性的用法相似

对齐方式

  • 水平对齐(HorizontalAlignment) :声明元素相对于其父元素的水平对齐方式
成 员说 明
Left、Center、Right子元素在其父元素内左端对齐、中心对齐、右端对齐
Stretch(默认)拉伸子元素至父元素的已分配空间。如果声明了Width和Height,则Width和Height优先
  • 垂直对齐(VerticalAlignment):描述元素相对于其父元素的垂直对齐方式。可能的取值分别为Top(顶端对齐)、Center(中心对齐)、Bottom(底端对齐)和Stretch(默认,垂直拉伸)

8.1.2 WPF内容模型

WPF内容模型是指如何组织和布局WPF控件的内容。用XAML描述控件元素时,一般语法形式为:

<控件元素名>
内容模型
</控件元素名>

1. Text和Inlines

Text内容模型表示一段字符串。TextBox、PasswordBox都属于Text内容模型

Xaml: 这是一段文本
C#: textBox1.Text=“这是一段文本”;

Inlines内容模型也表示一段字符串文本 ,和Text的区别是Inlines可以对其中的子字符串分别设置字体名称、粗体、斜体等样式

<TextBlock Name="textBlock1" TextWrapping="Wrap">利用<Bold>该控件</Bold>可以<Italic>快速显示</Italic>少量的文本
</TextBlock>

2. Content:

Content内容模型表示该内容是一个对象,该对象可以是文本、图像及其他元素。像Button、RepeatButton、CheckBox、RadioButton及Image都属于该模型

3. HeaderedContent:

HeaderedContent表示其内容模型为1个标题和1个内容项,二者都是任意对象。
TabItem是一个特殊类型的内容控件,利用它可设置内容和标题

4. Items:

Items表示一个项集合。可以通过设置控件的Items属性来直接填充该控件的每一项

WPF应用程序中创建控件对象的方式

在WPF应用程序中,有两种创建控件对象的方式
(1)静态(固定不变)元素一般用XAML来实现。
(2)动态变化的元素(添加删除元素由其他因素决定)一般用C#代码来实现

8.2 常用布局控件

8.2.1 WPF的布局分类

布局方式有:绝对定位(图形一般采用绝对定位)、动态定位

实际开发中,除了Canvas的子元素采用绝对布局外,其他布局元素内的元素都应该采用动态布局

  1. 网格 (Grid)

(1)是所有动态布局控件中唯一可按比例动态调整分配空间的控件

(2)Grid内的子元素中还可以嵌套Grid

Grid子元素使用以下附加属性来定位:

  • 用Grid.Row、Grid.Column指定子元素所在的行和列,在C#代码中用Grid.SetRow方法和Grid.SetCol方法指定
  • Grid.RowSpan跨多行。例如Grid.RowSpan="2"表示跨2行
  • Grid.ColumnSpan跨多列。例如Grid.ColumnSpan ="2"表示跨2列

(3)自动调整行高和列宽(Auto、*)

  1. 堆叠面板(StackPanel)

将子元素按纵向或横向顺序排列或堆叠。没有重叠的时候称为排列,有重叠的时候称为堆叠

常用属性:Orientation属性,排列或堆叠的方向。默认为纵向,如果希望横向排列或堆叠,将该属性设置为“Horizontal”即可

  1. 画布(Canvas)

Canvas用于定义一个区域,称为画布。在该画布内的所有子元素都用相对于该区域左上角的坐标位置x和y来定位,优点是执行效率高,缺点是其子元素无法动态定位,也无法自动调整大小

以下情况应该使用绝对定位布局:

1.当区域内只有一个图像或图形子元素时,应该使用绝对定位布局

2.当C#代码中需要使用此区域内的子元素坐标位置时,应该使用绝对定位布局

  1. 边框(Border)

用于在某个元素周围绘制边框,或者为某元素提供背景

常用属性:

  • CornerRadius:获取或设置边框的圆角半径
  • BorderThickness:获取或设置边框的粗细
  • Padding:获取或设置Border与其包含的子对象之间的距离
  1. 停靠面板(DockPanel)

用于定义一个区域,并使该区域内的子元素在其上、下、左、右各边缘按水平或垂直方式依次停靠

常用属性:

  • LastChildFill:默认为true,表示最后一个子元素始终填满剩余的空间。如果将该属性设置为false,还必须为最后一个子元素显式指定停靠方向
  • ockPanel.Dock:子元素指定其在父元素中的停靠方式

8.3 常用基本控件

1、按钮(Button、RepeatButton)

Button:除了显示文字之外还可以显示图像或者同时显示图像和文字

RepeatButton:从按下按钮到释放按钮的时间段内会自动重复引发其Click事件

Delay属性:指定事件的开始时间 Interval属性:控制重复的间隔时间

2、文本块(TextBlock)和标签(Label)

TextBlock:显示可格式化表示的只读文本,可分别指定字体系列、样式、粗细或大小

Label:Label的内容模型是Content,因此可以包含其他对象

一般将Label与TextBox一起使用,用于显示描述性信息、验证信息或输入指示信息

3、文本框(TextBox、PasswordBox、RichTextBox)

TextBox:TextBox控件用于显示或编辑纯文本字符

Text:表示显示的文本;
MaxLength:限制用户输入的字符数;
AcceptsReturn: False(默认)、True(按回车键换行);
TextWrapping:控制是否自动转到下一行,当其值为“Wrap”时,该控件可自动扩展以容纳多行文本;
BorderBrush:边框颜色;
BorderThickness:边框宽度,如果不希望该控件显示边框,将其设置为0即可

PasswordBox:密码输入

PasswordChar属性:掩码,即不论输入什么字符,显示的都是用它指定的字符;
Password属性:获取或设置输入的密码字符串;
PasswordChanged事件:当密码字符串改变时发生

注意: PasswordBox应该用PasswordChanged事件,不能用
KeyDown、MouseDown或者MouseUp事件来判断

4、单选按钮(RadioButton)

从多个选项中选择一项,其内容模型是ContentControl,即它所包含的对象元素可以是任何类型(字符串、图像或面板等),但只能包含一个对象元素

GroupName属性:分组。同一组的多个RadioButton该属性应设置为同一个值;
IsChecked属性:是否选中某个单选按钮,被选中为true,否则为false

5、复选框(CheckBox)

同时选择多项或某一项的不同状态。 内容模型是ContentControl

Content属性:显示的文本;
IsChecked属性:true表示选中,false表示未选中,none表示不确定;
IsThreeState属性:如果支持3种状态,则为true;否则为false。默认值为false。如果该属性为true,可将IsChecked属性设置为null作为第3种状态;
Click事件:单击复选框时发生。利用该事件可判断是三种状态中的哪一种;
Checked事件:复选框选中时发生;
UnChecked事件:复选框未选中时发生

6、列表框(ListBox)和下拉框(ComboBox)

ListBox:用于显示一组选项,内容模型是Items,每个选项既可以是字符串,也可以是图像

ComboBox:是“TextBox+可弹出的ListBox”的组合,它除了比ListBox多了一个TextBox以外,对于每个选项的操作与ListBox的用法相同

常用属性

Count属性:获取列表项的个数;
SelectedIndex属性:获取当前选定项从0开始的索引号,未选择任何项时该值为−1;
SelectedItem属性:获取当前选定的项,未选择任何项时该值为null;
SelectionMode属性:选择列表项的方式

常用方法

Items.Add方法:向ListBox的项列表添加项;
Items.Clear方法:从集合中移除所有项;
Items.Contains方法:确定指定的项是否位于集合内;
Items.Remove方法:从集合中移除指定的对象;
SelectionChanged事件:当选择项发生改变时引发此事件

8.4 菜单、工具条和状态条

1、菜单(Menu)和快捷菜单(ContextMenu)

(1)Menu
可以显示在窗口的任何一个位置,但一般显示在窗口的顶部
(2)ContextMenu
除了是右键弹出菜单外,其他用法与Menu控件的用法相同
(3)这两个控件的菜单项都是通过MenuItem来实现的
a)MenuItem内还可以嵌套MenuItem,从而实现多级菜单
b)设置MenuItem的IsCheckable="true"可让其有勾选记号(默认false)
c)可以用InputGestureText设置快捷键,还可以通过Command设置系统命令(剪切、复制、粘贴等)

2、工具条(ToolBar、ToolBarTray)和状态条(StatusBar)

(1)ToolBar
一般显示在窗口上方,由多个Button、CheckBox、RadioButton、ComboBox等排列组成,通过这些项可以快速地执行程序提供的一些常用命令
(2)ToolBarTray
是ToolBar的容器,该容器内可放置多个ToolBar,并可以用鼠标拖动调整ToolBar在容器中的排列顺序
(3)StatusBar
一般显示窗口下方,以水平排列形式显示图像和状态信息

如果文章对您有所帮助,记得一键三连支持一下哦~~

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. Go类型转换

    什么是隐式类型的转换&#xff1f; #include <iostream> using namespace std;int main() {int a 5;float b 6.2;a b ;cout<<a<<endl; }6GO不支持隐式类型的转换 package mainimport ("fmt""strconv" )func main() {1.基本类型转换…...

    2024/5/10 4:29:31
  2. mysql-事务篇

    事务简介 事务 是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。&#xff08;默认MySQL的事务是自动提交的&#xff0c;也就是说…...

    2024/4/13 4:47:30
  3. JAVASE——简单理解多线程

    前言 万字简单总结一下Java学习过程中的多线程&#xff0c;有不足之处欢迎指正&#xff0c;觉得不错的也可以三连一下 文章目录前言Thread类图片下载Runnable接口图片下载龟兔赛跑Callable接口图片下载静态代理模式Lamda表达式线程状态线程方法线程停止线程休眠&#xff08;sle…...

    2024/4/13 14:12:21
  4. 蓝桥杯国信长天单片机--硬件环境(一)

    CT107D 单片机由以下功能模块组成 1、功能模块 (1&#xff09;单片机芯片 配置IAP15F2K61S2单片机 (2&#xff09;显示模块 配置8路LED输出L1&#xff5e;L8配置8位8段共阳极数码管DS1&#xff5e;DS2配置LCM 1602和12860液晶接口 (3&#xff09;输入/输出模块 配置44矩阵…...

    2024/4/13 4:47:25
  5. 【scala+spark+hadoop+idea】踩坑记

    昨天装了一天&#xff0c;出现各种问题&#xff0c;比如版本不对应&#xff0c;hadoop的配置文件修改错误等等&#xff0c;我出现了问题照着网上的教程一步步走&#xff0c;最终还是死在了spark版本应该改低点【传送门】的问题上&#xff0c;这个问题我没有找到其他的解决方法&…...

    2024/4/16 14:30:01
  6. JS高级(1)

    目录 数据类型 分类 判断 问题 数据_变量_内存 数据 变量 内存 数据、变量、内存三者之间的关系&#xff1a; 问题 对象 问题 函数 回调函数 IIFE&#xff08;匿名函数自调用&#xff09; 函数中的this 数据类型 分类 基本类型 String&#xff1a;任意字符串…...

    2024/4/13 4:47:35
  7. goland 2021.2 配置go( go1.17.6)

    一&#xff0c;配置settings: 1,打开配置界面: file->settings->Go 如图: 2,配置GOROOT,如图: 3,配置GOPATH,如图&#xff1a;无需配置: 4,Go Modules: 选中Enable Go modules integration 默认已选中&#xff0c;无需配置 说明&#xff1a;刘宏缔的go森林是一个专注…...

    2024/4/14 15:56:27
  8. VOS音质不好要怎样解决?

    音质好坏主要取决于传输网络和经由设备的处理能力 如果 VOS 没有开启媒体转发的情况下&#xff0c;出现音质不好&#xff0c;那么排查问题时完全可以认为 VOS 是正常的&#xff0c;因为VOS没有参与语音流的处理&#xff0c;所以不涉及音质问题。 在 VOS 开启媒体转发的情况下…...

    2024/4/13 4:48:30
  9. qt GraphicsScene添加背景

    我想给GraphicsScene添加如下图所示这样的一个浅绿色背景图片&#xff0c;然后百度找了很多没用的方法。最实在的还是继承QGraphicsScence,重写drawBackground方法&#xff0c;详情可以看看事例 但是后来我发现直接给GraphicsScene设置背景颜色更加简单 直接用下面代码就可以…...

    2024/4/15 13:48:08
  10. python学习测试题1

    1. 在不上机的情况下&#xff0c;以下代码你能猜到屏幕会打印什么内容吗&#xff1f; myteacher 白天 yourteacher myteacher yourteacher 黑夜 print(myteacher)2. 在不上机的情况下&#xff0c;以下代码你能猜到屏幕会打印什么内容吗&#xff1f; myteacher 白天 yourt…...

    2024/4/26 23:00:57
  11. 三菱PLC基于Modbus协议通讯的DEMO程序

    EMERSON EV1000/EV2000变频器与MITSUBISH FX2 PLC 基于Modbus协议通讯的DEMO程序 一、硬件连接 三菱FX系列PLC基于Modbus协议通讯的DEMO称重程序 二、通讯方式 Modbus协议&#xff0c;ASCII格式&#xff0c;LRC校验&#xff1b; 主从方式&#xff1a;PLC为主机&#xff0c…...

    2024/4/13 4:48:30
  12. Mongodb随记

    目录使用1.控制台命令行中操作mongodb常见命令行2.可视化图形工具中操作MongoDB&#xff1a;Navicat Premium 153.通过后端代码区操作MongoDBmongoose&#xff1a;Node.js提供的一个用于便捷操作MongoDB的库express项目连接Mongodbmongoose对数据库集合操作&#xff1a;mongoos…...

    2024/5/8 6:13:38
  13. InnoDB索引,终于懂了

    《数据库索引&#xff0c;终于懂了》介绍了为什么B树适合做数据库索引&#xff0c;数据库的索引分为主键索引&#xff08;Primary Inkex&#xff09;与普通索引&#xff08;Secondary Index&#xff09;。InnoDB和MyISAM是怎么利用B树来实现这两类索引&#xff0c;其又有什么差…...

    2024/4/14 21:36:45
  14. 【SpringBoot后台】整合阿里云OSS实现文件上传

    关于OSS的基础使用&#xff0c;可以参看下前面的文章 点击进入&#xff0c;这里主要介绍下SpringBoot怎样操作阿里云OSS实现文件上传。 1 ServiceImpl.java 代码&#xff0c;可参看官方文档 进入 这个是官方文档中的代码&#xff0c;可以看到这里是实现上传一段文字 : “Hello…...

    2024/5/3 20:44:53
  15. 99. 恢复二叉搜索树

    恢复二叉搜索树 给你二叉搜索树的根节点 root &#xff0c;该树中的 恰好 两个节点的值被错误地交换。请在不改变其结构的情况下&#xff0c;恢复这棵树 。 示例 1&#xff1a; 输入&#xff1a;root [1,3,null,null,2] 输出&#xff1a;[3,1,null,null,2] 解释&#xff1a;…...

    2024/4/20 9:52:30
  16. 学大数据小胖的第十四天

    字节缓冲流:避免了底层系统的多次调用 BufferedOutputStream:该类实现缓冲输出流。 通过设置这样的输出流&#xff0c;应用程序可以向底层输出流写入字节&#xff0c;而不必为写入的每个字节导致底层系统的调用。 BufferedInputStream:创建一个内部缓冲区数组。 当从流…...

    2024/4/18 10:21:35
  17. View体系(十)从LinearLayout分析View的布局流程

    之前的文章《View体系&#xff08;六&#xff09;View工作流程入口》提到View的工作流程包括了measure、layout和draw的过程&#xff0c;上两篇文章《View体系&#xff08;八&#xff09;深入剖析View的onMeasure方法》和《View体系&#xff08;九&#xff09;从LinearLayout分…...

    2024/4/13 4:48:25
  18. Hive的几个重要表

    1.metastore数据库的DBS表 包含各表存储信息等 2.metastore数据库的TBLS表 包含各表是否是外部表等 3.metastore数据库的TABLE_PARAMS表 查看numFiles、numRows &#xff08;1&#xff09;如果是刚建表&#xff0c;numFiles、numRows都为0&#xff1b; &#xff08;2&…...

    2024/4/20 2:33:48
  19. Zynq FPGA实验报告——DDS IP

    Zynq FPGA实验报告DDS IP 数字波形合成1.使用 Vivado的IPI工具&#xff0c;例化DDS IP2.DDS需要能够配置频率字&#xff08;相位增量&#xff09;3.DDS工作时钟使用PL的板载50MHz时钟4.使用ILA工具观察波形&#xff0c; 使用VIO设定频率字5.在ILA的波形窗口里&#xff0c;观察你…...

    2024/4/19 8:09:59
  20. java.lang.ClassNotFoundException: org.springframework.boot.context.properties.ConfigurationPropertie

    今天启动SpringCloud时的错误 java.lang.ClassNotFoundException: org.springframework.boot.context.properties.ConfigurationPropertiesBean SpringCloud版本和SpringBoot版本不兼容导致的&#xff1b; 找到父项目&#xff0c;发现夫项目的SpringCloud的版本低&#xff0c…...

    2024/5/6 17:54:18

最新文章

  1. react router v6总结

    一、使用createBrowserRouter()创建路由&#xff1a; 1、src/router/index.js&#xff1a; import { createBrowserRouter } from "react-router-dom"; import ErrorPage from "/pages/404/";const router createBrowserRouter([{path: "/",e…...

    2024/5/10 14:48:33
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/9 21:23:04
  3. 蓝桥杯第十五届抱佛脚(十)贪心算法

    蓝桥杯第十五届抱佛脚&#xff08;十&#xff09;贪心算法 贪心算法基本概念 贪心算法是一种在算法设计中常用的方法&#xff0c;它在每一步选择中都采取在当前状态下最好或最优&#xff08;即最有利&#xff09;的选择&#xff0c;从而希望导致结果是最好或最优的算法。 贪…...

    2024/5/9 18:52:21
  4. 【Easy云盘 | 第十三篇】分享模块(获取目录信息、获取文件信息、创建下载链接)

    文章目录 4.4.7获取目录信息4.4.8获取文件信息4.4.9创建下载链接 4.4.7获取目录信息 明天做 4.4.8获取文件信息 明天做 4.4.9创建下载链接 明天做...

    2024/5/10 6:49:10
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/10 12:36:12
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/9 15:10:32
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/9 4:20:59
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/8 20:48:49
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/8 19:33:07
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/8 20:38:49
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/10 10:22:18
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/9 17:11:10
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57