Microsoft.UI.Xaml 是微软官方推出的 XAML 平台框架,它是 Windows 应用 SDK(原 Project Reunion)的核心组件之一,专门用于开发现代化的 Windows 应用程序,对于希望在 Windows 11 或 Windows 10 上运行或开发基于 UWP(Windows UI Library)和 WinUI 3 技术栈的应用用户而言,此组件是必不可少的运行时依赖。 特别说明 :当您在尝试安装或运行某些依赖 XAML Islands 的应用,或通过 WSA(Windows Subsystem for Android)运行安卓应用时,如果系统提示“Microsoft.UI.Xaml 缺失”,则表明您需要安装此组件以确保相关应用能够正常启动和运行,本版本为官方正式版,稳定可靠,请放心下载安装。
VBS可用于窗体控件的事件
以下文件来源于MICROSOFT MSDN 2005 对Vbs的事件总和公共事件 名称说明AutoSizeChanged此事件与此类无关。 BackColorChanged当 BackColor 属性的值更改时发生。 BackgroundImageChanged当 BackgroundImage 属性的值更改时发生。 BackgroundImageLayoutChanged当 BackgroundImageLayout 属性更改时发生。 BindingContextChanged当 BindingContext 属性的值更改时发生。 CausesValidationChanged当 CausesValidation 属性的值更改时发生。 ChangeUICues在焦点或键盘用户界面 (UI) 提示更改时发生。 Click在单击控件时发生。 ClientSizeChanged当 ClientSize 属性的值更改时发生。 ContextMenuChanged当 ContextMenu 属性的值更改时发生。 ContextMenuStripChanged当 ContextMenuStrip 属性的值更改时发生。 ControlAdded在将新控件添加到 时发生。 ControlRemoved在从 移除控件时发生。 CursorChanged当 Cursor 属性的值更改时发生。 Disposed 添加事件处理程序以侦听组件上的 Disposed 事件。 (从 Component 继承。 ) DockChanged当 Dock 属性的值更改时发生。 DoubleClick在双击控件时发生。 Dragdrop在完成拖放操作时发生。 DragEnter在将对象拖入控件的边界时发生。 DragLeave在将对象拖出控件的边界时发生。 DragOver在将对象拖到控件的边界上发生。 EnabledChanged在 Enabled 属性值更改后发生。 Enter进入控件时发生。 FontChanged在 Font 属性值更改时发生。 ForeColorChanged在 ForeColor 属性值更改时发生。 GiveFeedback在执行拖动操作期间发生。 GotFocus在控件接收焦点时发生。 HandleCreated在为控件创建句柄时发生。 HandleDestroyed在控件的句柄处于销毁过程中时发生。 HelpRequested当用户请求控件的帮助时发生。 ImeModeChanged在 ImeMode 属性更改后发生。 Invalidated在控件的显示需要重绘时发生。 KeyDown在控件有焦点的情况下按下键时发生。 KeyPress在控件有焦点的情况下按下键时发生。 KeyUp在控件有焦点的情况下释放键时发生。 Layout在控件应重新定位其子控件时发生。 Leave在输入焦点离开控件时发生。 LocationChanged在 Location 属性值更改后发生。 LostFocus当控件失去焦点时发生。 MarginChanged在控件边距更改时发生。 MouseCaptureChanged当控件失去鼠标捕获时发生。 MouseClick在鼠标单击该控件时发生。 MouseDoubleClick当用鼠标双击控件时发生。 MouseDown当鼠标指针位于控件上并按下鼠标键时发生。 MouseEnter在鼠标指针进入控件时发生。 MouseHover在鼠标指针停放在控件上时发生。 MouseLeave在鼠标指针离开控件时发生。 MouseMove在鼠标指针移到控件上时发生。 MouseUp在鼠标指针在控件上并释放鼠标键时发生。 MouseWheel在移动鼠标轮并且控件有焦点时发生。 Move在移动控件时发生。 PaddingChanged在控件空白区更改时发生。 Paint在重绘控件时发生。 ParentChanged在 Parent 属性值更改时发生。 PreviewKeyDown在焦点位于此控件上的情况下,当有按键动作时发生(在 KeyDown 事件之前发生)。 QueryAccessibilityHelp在 AccessibleObject 为辅助功能应用程序提供帮助时发生。 QueryContinueDrag在拖放操作期间发生,并且允许拖动源确定是否应取消拖放操作。 RegionChanged当 Region 属性的值更改时发生。 Resize在调整控件大小时发生。 RightToLEFTChanged在 RightToLeft 属性值更改时发生。 SizeChanged在 Size 属性值更改时发生。 StyleChanged在控件样式更改时发生。 SystemColorsChanged系统颜色更改时发生。 TabIndexChanged在 TabIndex 属性值更改时发生。 TabStopChanged在 TabStop 属性值更改时发生。 TextChanged在 Text 属性值更改时发生。 Validated在控件完成验证时发生。 Validating在控件正在验证时发生。 VisibleChanged在 Visible 属性值更改时发生。
iis中convert to application和add application有什么区别
与IIS一样,引擎在请求的有效期内将会触发事件,通过发信号来表示其处理过程从一个状态改变为了另一个状态。 例如,当引擎首次响应请求时,BeginRequest事件将被触发。 接下来触发的是authenticateRequest事件,该事件在已建立用户标识时出现。 (此外,还有大量的其他事件:AuthorizeRequest、ResolveRequestCache和EndRequest,等等。 这些事件属于类;有关详细信息,请参阅位于以下网址的技术文档:HttpApplicationClassOverview。 )正如上一部分所讨论的,可以创建ISAPI筛选器以响应IIS引发的事件。 同样,提供了HTTP模块,该模块可以响应由引擎引发的事件。 可以将应用程序配置为具有多个HTTP模块。 对于由引擎处理的每个请求,将初始化每个已配置的HTTP模块,并允许将事件处理程序绑定到处理请求期间所引发的事件。 请注意,对每个请求均使用了许多内置HTTP模块。 其中的一个内置HTTP模块是FormsAuthenticationModule,该模块首先检查是否使用了窗体身份验证,如果使用,将检查是否对用户进行了身份验证。 如果没有使用,会自动将用户重定向到指定的登录页面。 如上所述,通过使用IIS,传入请求将最终发送给ISAPI扩展,而ISAPI扩展的任务是返回特定请求的数据。 例如,在请求传统的ASP网页时,IIS将请求传递给扩展,该扩展的任务是返回被请求的ASP页面的HTML标记。 引擎使用相似的方法。 初始化HTTP模块后,引擎的下一项任务是确定应由哪个HTTP处理程序来处理请求。 所有通过引擎传递的请求最终都将到达HTTP处理程序或HTTP处理程序工厂(HTTP处理程序工厂仅返回HTTP处理程序的实例,然后使用该实例来处理请求)。 最终的HTTP处理程序将返回响应,即呈现被请求的资源。 此响应将被发送回IIS,然后IIS将响应返回给提出请求的用户。 包括许多内置的HTTP处理程序。 例如,PageHandlerFactory用于呈现网页。 WebServiceHandlerFactory用于呈现服务的响应SOAP信封。 TraceHandler将向呈现请求的HTML标记。 图2描述了如何处理对资源的请求。 首先,IIS接收到请求,并将请求调度给aspnet_。 接下来,引擎对已配置的HTTP模块进行初始化。 最后将调用正确的HTTP处理程序,并呈现被请求的资源,将所生成的标记返回给IIS和请求客户端。 图和正在处理请求创建和注册自定义HTTP模块和HTTP处理程序创建自定义HTTP模块和HTTP处理程序是相对简单的任务,包括创建实现正确接口的托管类。 HTTP模块必须实现接口,而HTTP处理程序和HTTP处理程序工厂必须分别实现接口和接口。 创建HTTP处理程序和HTTP模块的细节超出了本文的范围。 要获得详细的背景知识,请阅读MansoorAhmedSiddiqui的文章。 创建了自定义HTTP模块或HTTP处理程序之后,必须将其注册到Web应用程序。 为整个Web服务器注册HTTP模块和HTTP处理程序仅需在文件中进行简单的添加即可;而为特定Web应用程序注册HTTP模块或HTTP处理程序包括向应用程序的文件中添加几行XML。 特别要说明的是,要将HTTP模块添加到Web应用程序,应在的configuration/部分添加以下几行:type值提供了HTTP模块的程序集和类名称,而name值提供了友好名称,可以在文件中使用此友好名称来引用HTTP模块。 的configuration/部分中的标记对HTTP处理程序和HTTP处理程序工厂进行了配置,如下所示:如上所述,对于每个传入请求,引擎将确定应使用哪个HTTP处理程序来呈现请求。 此决定是基于传入请求的动词和路径做出的。 动词将指定所作出的HTTP请求的类型(GET或POST),而路径将指定被请求文件的位置和文件名。 因此,如果我们希望HTTP处理程序处理对扩展名为的文件的所有请求(GET或POST),可以在文件中添加下面几行:其中,type是HTTP处理程序的类型。 注意:注册HTTP处理程序时,应确保HTTP处理程序使用的扩展名已从IIS映射到引擎,这一点非常重要。 也就是说,在本示例中,如果扩展名没有从IIS映射到aspnet_扩展,则对文件的请求将导致IIS试图返回文件的内容。 为了使HTTP处理程序可以处理此请求,必须将扩展名映射到引擎。 然后,引擎将把请求正确地路由到相应的HTTP处理程序。 有关注册HTTP模块和HTTP处理程序的详细信息,请务必参考elementdocumentation和elementdocumentation。 返回页首实现URL重写可以使用ISAPI筛选器在IISWeb服务器级别实现URL重写,也可以使用HTTP模块或HTTP处理程序在级别实现URL重写。 本文重点介绍如何使用实现URL重写,因此我们将不对使用ISAPI筛选器实现URL重写的细节进行深入探讨。 但是,有大量的第三方ISAPI筛选器可用于URL重写,例如:•ISAPIRewrite•IISRewrite•PageXChanger•还有许多其他的筛选器!通过类的RewritePath()方法,可以在级别实现URL重写。 HttpContext类包含有关特定HTTP请求的HTTP特定信息。 对于引擎收到的每个请求,均为该请求创建一个HttpContext实例。 此类具有如下属性:Request和Response,提供对传入请求和传出响应的访问;Application和Session,提供对应用程序和会话变量的访问;User,提供有关通过了身份验证的用户的信息;其他相关属性。 使用Microsoft®1.0,RewritePath()方法可以接受单个字符串作为要使用的新路径。 HttpContext类的RewritePath(string)方法在内部对Request对象的Path属性和QueryString属性进行更新。 除了RewritePath(string),1.1还包括另一种形式的RewritePath()方法,此方法可以接受三个字符串输入参数。 此备用重载形式不仅要设置Request对象的Path属性和QueryString属性,还要设置内部成员变量,这些变量用于计算Request对象的PhysicalPath、PathInfo和FilePath属性值。 要在中实现URL重写,需要创建HTTP模块或HTTP处理程序,以便完成以下操作:1.检查被请求的路径,以确定URL是否需要重写。 2.如果需要重写,通过调用RewritePath()方法来重写路径。 例如,假设我们的网站中包含每个员工通过/info/?empID=employeeID均可访问的信息。 为了使URL可以地被“删节”,我们可以决定通过以下地址来访问员工页面:/people/。 这就是我们要使用URL重写的一个例子。 也就是说,在请求/people/页面时,我们要重写该URL,以便使用/info/?empID=1001页面。 使用HTTP模块执行URL重写在级别执行URL重写时,可以使用HTTP模块或HTTP处理程序来执行重写。 使用HTTP模块时,必须决定在请求有效期内的哪个时间点上来检查URL是否需要重写。 乍一看,这似乎可以任意选择,但决定会以一种明显而微妙的方式对应用程序产生影响。 由于内置模块使用Request对象的属性执行任务,因此选择在何处执行重写非常重要。 (如上所述,重写路径将改变Request对象的属性值。 )下面列出了这些密切相关的内置HTTP模块及其捆绑到的事件:HTTP模块事件说明FormsAuthenticationModuleAuthenticateRequest确定用户是否通过了窗体身份验证。 如果没有,用户将被自动重定向到指定的登录页面。 FileAuthorizationMoudleAuthorizeRequest使用Windows身份验证时,此HTTP模块将检查以确保Microsoft®Windows®帐户对被请求的资源具有足够的权限。 UrlAuthorizationModuleAuthorizeRequest检查以确保请求者可以访问指定的URL。 通过文件中的和元素来指定URL授权。 如上所述,BeginRequest事件在AuthenticateRequest之前触发,后者在AuthenticateRequest之前触发。 可以执行URL重写的一个安全位置是在BeginRequest事件中。 也就是说,如果URL需要重写,该操作将在任何一个内置HTTP模块运行后执行。 使用窗体身份验证时,这种方法存在一定的缺陷。 如果您以前使用过窗体身份验证,您会了解当用户访问受限资源时,他们将被自动重定向到指定的登录页面。 成功登录后,用户将被返回到他们第一次尝试访问的页面。 如果在BeginRequest或AuthenticateRequest事件中执行URL重写,登录页面(提交后)将把用户重定向到重写后的页面上。 也就是说,假设用户在其浏览窗口中键入了/people/,此地址将被重写为/info/?empID=1001。 如果将Web应用程序配置为使用窗体身份验证,当用户第一次访问/people/时,首先,URL将被重写为/info/?empID=1001;接下来,FormsAuthenticationModule将运行,并将用户重定向到登录页面(如果需要)。 但是,用户在成功登录后将被发送到/info/?empID=1001,因为当FormsAuthenticationModule运行后,此URL即是请求的URL。 同样,在BeginRequest或AuthenticateRequest事件中执行重写时,UrlAuthorizationModule看到的将是重写后的URL。 也就是说,如果您在文件中使用元素来为特定的URL指定授权,则必须引用重写后的URL。 要解决这些细微问题,您可以决定在AuthorizeRequest事件中执行URL重写。 此方法解决了URL授权和窗体身份验证的一些问题,但同时也产生了新的问题:文件授权无法工作。 使用Windows身份验证时,FileAuthorizationModule将检查以确保通过身份验证的用户具有访问特定页面的相应权限。 假设一组用户对C:\Inetput\wwwroot\info\没有Windows级别的文件访问权限,并要尝试访问/info/?empID=1001,他们将会收到授权错误消息。 但是,如果我们将URL重写移到AuthenticateRequest事件中,当FileAuthorizationModule检查安全设置时,仍然认为被请求的文件是people/,因为该URL必须被重写。 因此,文件授权检查将通过,允许此用户查看重写后的URL/info/?empID=1001的内容。 那么,应该何时在HTTP模块中执行URL重写?这取决于要使用的身份验证类型。 如果不想使用任何身份验证,则无论URL重写发生在BeginRequest、AuthenticateRequest还是AuthorizeRequest中都没有什么关系。 如果要使用窗体身份验证而不使用Windows身份验证,请将URL重写放在AuthorizeRequest事件处理程序中执行。 最后,如果要使用Windows身份验证,请在BeginRequest或AuthenticateRequest事件进行过程中安排URL重写。 在HTTP处理程序中执行URL重写也可以由HTTP处理程序或HTTP处理程序工厂执行URL重写。 如上所述,HTTP处理程序是负责生成特定类型请求的内容的类;HTTP处理程序工厂是负责返回HTTP处理程序实例的类,该实例可以生成特定类型请求的内容。 在本文中,我们将对如何为网页创建URL重写HTTP处理程序工厂进行讨论。 HTTP处理程序工厂必须实现IHttpHandlerFactory接口,此接口包括GetHandler()方法。 初始化相应的HTTP模块后,引擎将确定为给定的请求调用哪个HTTP处理程序或HTTP处理程序工厂。 如果要调用HTTP处理程序工厂,引擎将为Web请求调用传入HttpContext的HTTP处理程序工厂的GetHandler()方法,以及一些其他信息。 然后,HTTP处理程序工厂必须返回一个对象,该对象将实现可以处理请求的IHttpHandler。 要通过HTTP程序程序执行URL重写,我们可以创建一个HTTP处理程序工厂,该处理程序工厂的GetHandler()方法将检查被请求的路径,以确定是否需要重写URL。 如果需要,它可以调用传入的HttpContext对象的RewritePath()方法,如前面所讨论的。 最后,HTTP处理程序工厂可以返回由类的GetCompiledPageInstance()方法返回的HTTP处理程序。 (此技术与内置网页HTTP处理程序工厂PageHandlerFactory工作时所应用的技术相同。 )由于所有HTTP模块都将在实例化自定义HTTP处理程序工厂之前进行初始化,因此,在将URL重写放在事件的后半段时,使用HTTP处理程序工厂就会带来相同的风险,即文件授权无法工作。 因此,如果您依赖于Windows身份验证和文件授权,您可能希望为URL重写使用HTTP模块方法。 在下一部分中,我们将对构建可重用的URL重写引擎进行讨论。 在介绍了URL重写引擎(可通过下载本文的代码获得)之后,我们将在剩下的两个部分中对URL重写的实际使用情况进行介绍。 首先,我们将讨论如何使用URL重写引擎,并介绍一个简单的URL重写示例。 接下来,我们将利用重写引擎的正则表达式功能来提供真正“可删节”的URL。 返回页首构建URL重写引擎为了有助于描述如何在应用程序中实现URL重写,我创建了URL重写引擎。 此重写引擎将提供以下功能:•使用URL重写引擎的页面开发人员可以在文件中指定重写规则。 •重写规则可以使用正则表达式来实现功能强大的重写规则。 •可以轻松地将URL重写配置为使用HTTP模块或HTTP处理程序。 在本文中,我们将介绍仅使用HTTP模块的URL重写。 要查看如何使用HTTP处理程序来执行URL重写,请参考可随本文下载的代码。 为URL重写引擎指定配置信息让我们先介绍一下文件中重写规则的结构。 首先,您需要在文件中指明要使用HTTP模块还是HTTP处理程序来执行URL重写。 在下载代码中,文件包含两个已注释掉的条目:-->-->注释掉条目,以使用HTTP模块执行重写;注释掉条目,以使用HTTP处理程序执行重写。 除了指定使用HTTP模块还是HTTP处理程序执行重写外,文件还包含重写规则:重写规则由两个字符串组成:要在被请求的URL中查找的模式;要替换此模式的字符串(如果找到)。 在文件中,此信息是使用以下语法表达的:要查找的模式要用来替换模式的字符串要查找的模式要用来替换模式的字符串每个重写规则均由元素表达。 要搜索的模式由元素指定,而要替换所找到的模式的字符串将在元素中输入。 这些重写规则将从头到尾进行计算。 如果发现与某个规则匹配,URL将被重写,并且对重写规则的搜索将会终止。 在元素中指定模式时,请注意,要使用正则表达式来执行匹配和字符串替换。 (稍后,我们将介绍一个真实的示例,说明如何使用正则表达式来搜索模式。 )由于模式是正则表达式,应确保转义正则表达式中的任何保留字符。 (一些正则表达式保留字符包括:.、?、^、$及其他。 可以通过在前面加反斜杠(如\.)对这些字符进行转义,以匹配文字句点。 )使用HTTP模块执行URL重写创建HTTP模块与创建可以实现IHttpModule接口的类一样简单。 IHttpModule接口定义了两种方法:•Init(HttpApplication)。 此方法在初始化HTTP模块后触发。 在此方法中,您将把事件处理程序绑定到相应的HttpApplication事件。 •Dispose()。 当请求已完成并已发送回IIS时调用此方法。 您应当在此处执行所有最终的清除操作。 为了便于为URL重写创建HTTP模块,我将从创建抽象基类BaseModuleRewriter开始介绍。 此类将实现IHttpModule。 在Init()事件中,它将HttpApplication的AuthorizeRequest事件绑定到BaseModuleRewriter_AuthorizeRequest方法。 BaseModuleRewriter_AuthorizeRequest方法将调用该类传入被请求的Path的Rewrite()方法,以及传入Init()方法的HttpApplication对象。 Rewrite()方法是抽象的,也就是说,在BaseModuleRewriter类中,Rewrite()方法没有方法主体;从BaseModuleRewriter派生而来的类必须覆盖此方法并提供方法主体。 具有此基类后,只需创建由BaseModuleRewriter派生的类即可,该类可以覆盖Rewrite()并在那里执行URL重写逻辑。 下面显示了BaseModuleRewriter的代码。 publicabstractclassBaseModuleRewriter:IHttpModule{publicvirtualvoidInit(HttpApplicationapp){//警告!此代码不适用于Windows身份验证!//如果使用Windows身份验证,//请改为+=newEventHandler(_AuthorizeRequest);}publicvirtualvoidDispose(){}protectedvirtualvoidBaseModuleRewriter_AuthorizeRequest(objectsender,EventArgse){HttpApplicationapp=(HttpApplication)sender;Rewrite(,app);}protectedabstractvoidRewrite(stringrequestedPath,HttpApplicationapp);}请注意,BaseModuleRewriter类将在AuthorizeRequest事件中执行URL重写。 如上所述,如果将Windows身份验证与文件授权结合使用,您需要对此做出更改,以便可以在BeginRequest或AuthenticateRequest事件中执行URL重写。 ModuleRewriter类扩展了BaseModuleRewriter类,并负责执行实际的URL重写。 ModuleRewriter包含单一覆盖方法(Rewrite()),如下所示:protectedoverridevoidRewrite(stringrequestedPath,){//获得配置规则RewriterRuleCollectionrules=();//遍历每个规则for(inti=0;i
silverlight的功能代码编写和winform的功能代码编写有什么区别
不行。 SliverLight近似于是WPF的一个子集,而WPF是微软专门用来代替WinForm的新一代UI技术,使用XAML来进行界面表达,底层结构和WinForm完全不同,仅是部分常用方式相似。 附WPF简介:WPF是微软新一代图形系统,运行在 Framework 3.0架构下,为用户界面、2D/3D 图形、文档和媒体提供了统一的描述和操作方法。 基于DirectX 9/10技术的WPF不仅带来了前所未有的3D界面,而且其图形向量渲染引擎也大大改进了传统的2D界面,比如Vista中的半透明效果的窗体等都得益于WPF。 Microsoft 在引入 Windows Presentation Foundation 的同时,还引入了 XAML,这是一种公开表示 Windows 应用程序用户界面的标记语言,可使开发人员和设计人员用来构建和重用 UI 的工具更加丰富。 对于 Web 开发人员,XAML 提供了熟悉的 UI 说明模式。 XAML 还使 UI 设计从基础代码中分离出来,从而使开发人员和设计人员之间的合作更加紧密。 PS:SilverLight使用了一整套完全重写的 framework,体积非常小,仅有完整的框架的很少一部分,其运行时也是完全独立于传统的 clr,是一个内嵌在浏览器中的新型clr。














发表评论