Silverlight學習筆記(3):Silverlight的界面布局

在上一篇中講述了使用VS2010開發Silverlight的一些基礎知識,并且講述了Silverlight的部署和代碼安全知識,這一篇主要是講述如何在Silverlight中擺放界面元素。
記得早年前我還在學習Java的時候,當時有兩種開發Java SE的方法,一種是使用JCreator或者JBuilder之類的IDE開發(現在這二者都幾乎沒人用了,流行的是Eclipse或者NetBeans);一種是使用Visual J++開發。使用前一種方法開發的Java程序可以多種操作系統平臺上運行,不過界面布局比較麻煩,什么CardLayout、FlowLayout、BorderLayout、GridBagLayout、GridLayout等等,開發一個復雜的界面需要開發人員對各種布局類都有所了解;使用Visual J++開發的話可以使用XY坐標來定位元素,相對來說容易多了,不過這種開發的Java軟件并不是嚴格意義上的Java軟件,它只能在Windows平臺上運行。Java從出現到現在,在Java EE和Java ME上都相對比較成功,而唯獨在Java SE上表現不佳,不知道跟它難以使用的界面布局有關系。
布局概述
在上一篇提到了XAML語言,它適用于在WPF和Silverlight中進行界面布局的標記語言,它是一種有特定要求的XML語言,從某種意義上來說,我覺得它和XHTML走得更近一些:首先它們都是有特定格式的XML語言,其次它們都是用于界面布局。除此之外,在XAML語言中還有一個特點,那就是每一個元素都代表著一個Silverlight中的類,并且在XAML中只能有一個頂級元素。因此在進行WPF和Silverlight開發時不能繞開的一個問題就是界面布局,在Silverlight中常見的界面布局類有Canvas、Grid和StackPanel。
Canvas、Grid和StackPanel其實都是繼承自System.Windows.Controls.Panel的類,它們的繼承層次關系如下圖:
?
Panel類有如下比較常見的屬性:
Background:用于填充 Panel 的邊框之間的區域的 Brush。
Children:此 Panel 的子元素的 UIElementCollection。
Height:元素的建議高度。
HorizontalAlignment:在父元素(如面板或項控件)中構成此元素時應用于此元素的水平對齊特征。
MaxHeight:元素的最大高度約束,MaxHeight的默認值是PositiveInfinity(正無窮大)。?
MaxWidth:元素的最大寬度約束,MaxWidth的默認值是PositiveInfinity(正無窮大)。?
MinHeight:元素的最小高度約束,MinHeight的默認值分別是Auto(自動調整)。
MinWidth:元素的最小寬度約束,MinWidth的默認值分別是Auto(自動調整)。
VerticalAlignment:在父元素(如面板或項控件)中組合此元素時應用于此元素的垂直對齊特征。
Width:元素的寬度。
可以看出在這里存在著Height、MaxHeigh、MinHeight及Width、MaxWidth、MinWidth這么兩組與高度和寬度相關的屬性,這的確讓初學的人有些模糊。這些值之間存在著什么樣的關系呢?拿Width、MaxWidth、MinWidth來說,它們存在的關系如下:如果這三個值之間存在沖突,則應用程序確定寬度的實際順序是:首先必須采用 MinWidth;然后采用 MaxWidth;最后,如果這些值中的每個值都在限制之內,則采用 Width。為什么對于Width或者Height會出現這么三個屬性呢?這是跟編程有一定的關系,假如我們在一個布局容器中水平放置了三個按鈕,每個按鈕的寬度是60像素,即使不考慮這三個按鈕之間的間隙顯示這三個按鈕的寬度至少需要180像素,在默認情況下Width、MaxWidth、MinWidth的默認值分別是Auto(自動調整)、PositiveInfinity(正無窮大)、0.0,這樣一來按照上面的規則會采取自動調整的方式。
StackPanel布局用法
StackPane是上面提到的幾種布局中最簡單的一種布局方式,它在一行或者一列中顯示所有的子控件,默認情況下它是在一列中顯示所有元素的,不過可以通過設置它的Orientation 屬性為Horizontal以指示在一行中顯示所有元素。
下面是一個使用StackPanel的簡單例子:

<navigation:Page x:Class="SilverlightDemo1.StackPanelDemo" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" d:DesignWidth="640" d:DesignHeight="480" Title="StackPanelDemo Page"> <StackPanel Height="100" Name="stackPanel1" Width="200" Background="Yellow"> <Button Content="按鈕一" Height="23" Name="button1" Width="100" /> <Button Content="按鈕二" Height="23" Name="button2" Width="200" /> <Button Content="按鈕三" Height="23" Name="button3" Width="400" /> </StackPanel> </navigation:Page>

這個Page的顯示效果如下:
?
在上面的代碼中我們設置StackPanel的Width為200,沒有設置MaxWidth、MinWidth的值,最終實際顯示寬度為200,因為此時MaxWidth和MinWidth都采用了默認值,因為這這三個值有沖突但是都在限制(沒有找到具體對限制的定義,周公推測為MinWidth≤Width≤MaxWidth,如果您覺得周公的推測不正確,請告知以免誤導大家,謝謝)之內,所以最終實際寬度為200。
如果設置StackPanel的Width、MaxWidth、MinWidth分別為200、400、100,最終實際顯示寬度仍為200,原因同上,如下圖所示:
?
如果設置StackPanel的Width、MaxWidth、MinWidth分別為200、100、100,最終實際顯示寬度為100,這里MaxWidth和MinWidth都是100,而Width卻是200不在限制之內,所以最終顯示寬度為MinWidth設置的寬度,如下圖所示:
?
如果設置StackPanel的Width、MaxWidth、MinWidth分別為200、400、500,最終實際顯示寬度為500,這里MaxWidth和MinWidth分別是400和500,而Width卻是200不在限制之內,所以最終顯示寬度也為MinWidth設置的寬度,如下圖所示:
?
Grid布局用法
Grid布局是Silverlight一種比較復雜的布局,它有點像我們HTML中的Table元素,將空間劃分為行和列組成的單元格,在每個單元格中可以放置其它元素,下面是一個使用Grid的例子:

<navigation:Page x:Class="SilverlightDemo1.GridDemo1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" d:DesignWidth="400" d:DesignHeight="300" Title="GridDemo1 Page"> <Grid x:Name="LayoutRoot" Background="Pink"> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition Height="200" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="100" /> <ColumnDefinition Width="100" /> <ColumnDefinition Width="100" /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Button Content="按鈕一" Height="23" HorizontalAlignment="Left" Name="button1" VerticalAlignment="Center" Width="75" Grid.Column="0" Grid.Row="0" /> <Button Content="按鈕二" Grid.Column="1" Grid.Row="0" Height="23" HorizontalAlignment="Center" Name="button2" VerticalAlignment="Top" Width="75" /> <TextBox Grid.Column="1" Grid.Row="1" Height="23" HorizontalAlignment="Center" Name="textBox1" VerticalAlignment="Center" Width="80" Text="文本框" /> </Grid> </navigation:Page>

它的顯示效果如下:
?
當然Grid也可以像HTML中的Table一樣跨行或者跨列,這需要通過設置控件的RowSpan或者ColumnSpan屬性,下面就是一個例子:

<navigation:Page x:Class="SilverlightDemo1.GridDemo1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" d:DesignWidth="400" d:DesignHeight="300" Title="GridDemo1 Page"> <Grid x:Name="LayoutRoot" Background="Pink"> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition Height="200" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="100" /> <ColumnDefinition Width="100" /> <ColumnDefinition Width="100" /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Button Content="按鈕一" Height="220" HorizontalAlignment="Left" Name="button1" Width="75" Grid.Column="0" Grid.Row="0" Grid.RowSpan="2" /> <Button Content="按鈕二" Grid.Column="1" Grid.Row="0" Height="23" HorizontalAlignment="Center" Name="button2" VerticalAlignment="Top" Width="75" /> <TextBox Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2" Height="23" Name="textBox1" VerticalAlignment="Center" Width="80" Text="文本框" /> <Button Content="按鈕三" Grid.Column="2" Height="23" HorizontalAlignment="Left" Name="button3" VerticalAlignment="Top" Width="75" /> <Button Content="按鈕四" Grid.Column="3" Grid.Row="1" Height="23" HorizontalAlignment="Left" Name="button4" VerticalAlignment="Top" Width="75" /> </Grid> </navigation:Page>

它的顯示效果如下:
?
Canvas布局用法
相比Grid和Grid的布局方式來說,Canvas提供了另外一種途徑來布置我們的控件,它采用了我們比較熟悉的利用坐標的方式的,在使用Canvas布局時可以設置每個控件Top和Left屬性,也就是設置控件距離它所在的容器的距離,下面就是一個例子:

<navigation:Page x:Class="SilverlightDemo1.CanvasDemo1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" d:DesignWidth="640" d:DesignHeight="480" Title="CanvasDemo1 Page"> <Canvas Height="240" Name="canvas1" Width="300" Background="Teal"> <Button Canvas.Left="40" Canvas.Top="161" Content="登錄" Height="23" Name="button1" Width="75" /> <TextBlock Canvas.Left="40" Canvas.Top="56" Height="23" Name="textBlock1" Text="用戶名" /> <TextBlock Canvas.Left="40" Canvas.Top="102" Height="23" Name="textBlock2" Text="密碼" /> <Button Canvas.Left="183" Canvas.Top="161" Content="取消" Height="23" Name="button2" Width="75" /> <TextBox Canvas.Left="138" Canvas.Top="56" Height="23" Name="textBox1" Width="120" /> <PasswordBox Canvas.Left="138" Canvas.Top="102" Height="23" Name="passwordBox1" Width="120" /> </Canvas> </navigation:Page>

它的顯示效果如下:
?
在代碼中我們對用戶名所對應的文本框的設置是:
<TextBox Canvas.Left="138" Canvas.Top="56" Height="23" Name="textBox1" Width="120" />
于是就會在距離Canvas頂部56、左邊138處顯示一個高度為23、寬度為120的文本框。
布局的綜合使用
雖然在XAML中只能有一個頂級元素,但是這并不意味著在一個界面中只使用一種界面布局,我們完全可以在外層布局中嵌套內層布局,就像我們在HTML的Table中再次嵌套Table一樣,下面是一個簡單的例子:

<navigation:Page x:Class="SilverlightDemo1.Graphics" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" d:DesignWidth="800" d:DesignHeight="600" Title="Chapter10 Page"> <StackPanel Width="800" Height="600" Orientation="Vertical"> <Canvas Width="800" Height="200" Background="White"> <Canvas.Resources> <Storyboard x:Name="myStroryboard"> <DoubleAnimation Storyboard.TargetName="myTransform" Storyboard.TargetProperty="Angle" From="0" To="360" Duration="0:0:5" RepeatBehavior="Forever"/> </Storyboard> </Canvas.Resources> <Image Canvas.Left="50" Canvas.Top="50" Height="100" Name="image01" Stretch="Fill" Width="100" Source="image/15.jpg" MouseEnter="Image_MouseEnter" MouseLeave="Image_MouseLeave"> <Image.RenderTransform> <RotateTransform x:Name="myTransform" Angle="15" CenterX="50" CenterY="50"></RotateTransform> </Image.RenderTransform> </Image> <Image Canvas.Left="350" Canvas.Top="0" Height="100" Name="image02" Stretch="Fill" Width="100" Source="image/15.jpg"> </Image> <Image Canvas.Left="350" Canvas.Top="0" Height="100" Name="image03" Stretch="Fill" Width="100" Source="image/15.jpg" Opacity="0.8"> <Image.RenderTransform> <TransformGroup> <ScaleTransform ScaleY="-0.75"></ScaleTransform> <TranslateTransform Y="180" X="30"></TranslateTransform> <SkewTransform AngleX="-15"></SkewTransform> </TransformGroup> </Image.RenderTransform> <Image.OpacityMask> <LinearGradientBrush StartPoint="0.5,0.0" EndPoint="0.5,1.0"> <GradientStop Offset="0.0" Color="#00000000"></GradientStop> <GradientStop Offset="1.0" Color="#FF000000"></GradientStop> </LinearGradientBrush> </Image.OpacityMask> </Image> </Canvas> <Canvas Width="800" Height="200"> <Image Canvas.Left="100" Canvas.Top="10" Height="100" Name="image31" Stretch="Fill" Width="200" Source="image/14.jpg" /> <Image Canvas.Left="100" Canvas.Top="10" Height="100" Name="image32" Stretch="Fill" Width="200" Source="image/14.jpg"> <Image.RenderTransform> <RotateTransform Angle="15" CenterX="0" CenterY="0"></RotateTransform> </Image.RenderTransform> </Image> <Image Canvas.Left="100" Canvas.Top="10" Height="100" Name="image33" Stretch="Fill" Width="200" Source="image/14.jpg"> <Image.RenderTransform> <RotateTransform Angle="30" CenterX="50" CenterY="300"></RotateTransform> </Image.RenderTransform> </Image> <Image Canvas.Left="100" Canvas.Top="10" Height="100" Name="image34" Stretch="Fill" Width="200" Source="image/14.jpg"> <Image.RenderTransform> <RotateTransform Angle="45" CenterX="0" CenterY="50"></RotateTransform> </Image.RenderTransform> </Image> </Canvas> <Canvas Width="800" Height="200"> <Image Canvas.Left="100" Canvas.Top="10" Height="100" Name="image1" Stretch="Fill" Width="200" Source="image/14.jpg" /> <Image Canvas.Left="100" Canvas.Top="10" Height="100" Name="image2" Stretch="Fill" Width="200" Source="image/14.jpg"> <Image.RenderTransform> <RotateTransform Angle="15"></RotateTransform> </Image.RenderTransform> </Image> <Image Canvas.Left="100" Canvas.Top="10" Height="100" Name="image3" Stretch="Fill" Width="200" Source="image/14.jpg"> <Image.RenderTransform> <RotateTransform Angle="30"></RotateTransform> </Image.RenderTransform> </Image> <Image Canvas.Left="100" Canvas.Top="10" Height="100" Name="image4" Stretch="Fill" Width="200" Source="image/14.jpg"> <Image.RenderTransform> <RotateTransform Angle="40"></RotateTransform> </Image.RenderTransform> </Image> </Canvas> </StackPanel> </navigation:Page>

它的顯示效果如下:
?
總結:本篇主要講述了Silverlight中幾種常見的布局:StackPanel可以將控件按行或者按列布局,這是一種比較簡單的布局方式;Grid可以采用類似于HTML中Table的方式布局,并且可以設置控件跨行或者跨列擺放;Canvas控件采用類似于坐標定位的方式對控件進行布局。還有一些布局在本篇中沒有講述,讀者朋友可以在學習時借鑒這些知識來學習,其實利用這些布局已經足夠實現復雜的界面了。
下一篇將講述常用控件的學習。
周公(zhoufoxcn)
2010-10-11

轉載于:https://www.cnblogs.com/zhoufoxcn/archive/2010/10/11/2515619.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/275864.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/275864.shtml
英文地址,請注明出處:http://en.pswp.cn/news/275864.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

pov-inc_yourself勞自己-懶惰的設計師的POV和一些Figma

pov-incAre you ready and lazy enough (you will fully understand with continue reading this)? Coffee and tea next to you? Alright. This article is going to (not) kick you in your a**. It will be a bit of ‘lesson learned’, for sure a bit of FIGMA, and a …

Geary 0.13.0 發布,GNOME 3 Email 客戶端應用

百度智能云 云生態狂歡季 熱門云產品1折起>>> Geary 0.13.0 發布了&#xff0c;Geary 是一個電子郵件應用&#xff0c;用于 GNOME 3 桌面版本&#xff0c;它允許閱讀、查找和發送電子&#xff0c;并提供簡潔、現代化的界面。這是一個重要的新版本&#xff0c;具有許…

mysql表連接_mysql表連接

在數據庫中tableA連接tableB如下&#xff1a;tableA:a1  a21  12  23  24  3tableB:b1 b22  12  23  33  46  5笛卡爾積&#xff1a;select * from tableA, tableB.1  1  2  11  1  2  21  1  3  31  1  3  41  1  6  52…

輕型本地服務器_一小時超輕型漂移機

輕型本地服務器Iwas introduced to the world of Hyper Light Drifter through a series of visions — titans ravage a broken city, a shallow sea is stained red by floating corpses, a skinny dog leads me into the yawning abyss of a pillar in the center of the se…

baidu的服務器數據里面裝的都是垃圾!

baidu的服務器數據里面裝的都是垃圾&#xff01; 除了垃圾廣告一點價值沒有&#xff0c;能不能學學google。 國人天天喊支持國貨&#xff0c;但國貨很多垃圾&#xff0c;沒有人管理這些制造垃圾的人。 轉載于:https://www.cnblogs.com/helper/archive/2010/10/12/1848371.html

聊聊前端面試

大家好&#xff0c;我是若川。今天分享一篇面試相關的文章。點擊下方卡片關注我、加個星標&#xff0c;或者查看源碼等系列文章。學習源碼整體架構系列、年度總結、JS基礎系列最近 Zoom 國內又開放招聘了&#xff0c;我們組有了前端的 HC&#xff0c;所以我也參加了幾場面試。合…

成為自信的node.js開發者(一)

這個博客是我最近整理了過去的文章。 適合閱讀的同學 想更進一步深入理解node的同學&#xff0c;如果你已經稍微了解一點點node, 可以用node做一些小demo&#xff0c;并且想更深一步的了解&#xff0c;希望這篇文章可以幫助到你。 不太適合閱讀的同學 不太熟悉基本的javascript…

mysql讀寫分離和分布式_MySQL主從復制與讀寫分離

MySQL主從復制(Master-Slave)與讀寫分離(MySQL-Proxy)實踐Mysql作為目前世界上使用最廣泛的免費數據庫&#xff0c;相信所有從事系統運維的工程師都一定接觸過。但在實際的生產環境中&#xff0c;由單臺Mysql作為獨立的數據庫是完全不能滿足實際需求的&#xff0c;無論是在安全…

ux和ui_UI和UX設計師的10種軟技能

ux和ui重點 (Top highlight)As designers, whether it be UI, UX, or Product Design, we tend to direct our focus and energy on developing and mastering tangible skills.作為設計師&#xff0c;無論是UI&#xff0c;UX還是產品設計&#xff0c;我們都將重點和精力放在開…

SQLServer中批量插入數據方式的性能對比 (轉)

轉自&#xff1a;http://www.cnblogs.com/wlb/archive/2010/03/02/1676136.html 昨天下午快下班的時候&#xff0c;無意中聽到公司兩位同事在探討批量向數據庫插入數據的性能優化問題&#xff0c;頓時來了興趣&#xff0c;把自己的想法向兩位同事說了一下&#xff0c;于是有了本…

VueConf China 2021 《Vue3生態進展-尤雨溪》 Reaction

大家好&#xff0c;我是若川。今天分享昨天Vueconf的一篇文章&#xff0c;來了解下Vue的生態進展。另外今晚7點&#xff0c;Vuebeijing社區邀請了尤大會在視頻號直播&#xff0c;可以加我微信 ruochuan12&#xff0c;告訴觀看地址提前預約。點擊下方卡片關注我、加個星標&#…

Plsql運行mysql腳本_oracle中PLSQL語句

1.set autot off 禁止使用autotrace命令 set autot on 這個命令包括exp 和 stat(執行語句、生成explain plan、生成統計信息) set autot trace 不執行sql語句&#xff0c;但(生成explain plan、生成統計信息) set autot trace exp stat 與上句同 set autot trace st1.set autot…

2019年,你需要關注這些Node API和Web框架

對于Node.js框架和開源軟件來說&#xff0c;2018年是非常有趣的一年。開發者社區討論了企業贊助對開源項目的作用以及如何維護那些沒有經濟支持卻有數百萬人使用的項目。同樣&#xff0c;安全問題也得到了極大關注&#xff0c;一些流行的Node/JS軟件包被劫持&#xff0c;Github…

ai創造了哪些職業_關于創造職業的思考

ai創造了哪些職業When I was growing up, the idea of a creative career wasn’t an option.當我長大時&#xff0c;創意事業的想法不是一個選擇。 I had enjoyed doodling, arts and crafts as a kid, so as I grew up, it was a natural transition into Photoshop and lat…

Windows Mobile,用C#更改網絡連接(SSID、IP Address、Subnet Mask、Gatew... (轉)

前幾天在做一個改變PDA無線網絡連接的SSID和IP的功能是發現了一個好東西OpenNETCF Framework使用OpenNETCF.Net包&#xff0c;實現了任意改變PDA無線網絡連接的功能。并且不需要Reset PDA。現在正在做一個IP Manager For Windows Mobile的小程序。實現搜索當前網卡可見的SSID、…

一文讀懂vuex4源碼,原來provide/inject就是妙用了原型鏈?

1. 前言你好&#xff0c;我是若川&#xff0c;歡迎加我微信ruochuan12&#xff0c;加群長期交流學習。這是學習源碼整體架構系列 之 vuex4 源碼&#xff08;第十篇&#xff09;。學習源碼整體架構系列文章(有哪些必看的JS庫)&#xff1a;jQuery、underscore、lodash、sentry、v…

Spring4.3x教程之一IOCDI

SpringIOC也稱為DI&#xff0c;對屬性內容的注入可以通過屬性的setXXX方法進行也可以通過構造方法進行&#xff0c;當然還可以使用工廠模式進行屬性內容的注入。 什么是DI&#xff1f;什么是IOC&#xff1f; DI&#xff1a;Dependency Injection依賴注入 其實一個類中的屬性就是…

戰神4 幕后花絮 概念藝術_幕后花絮:品牌更新的背后

戰神4 幕后花絮 概念藝術Under the Hood gives you an inside look at different parts of Waze — straight from the people working on them every day.在引擎蓋下&#xff0c;您可以深入了解Waze的不同部分-直接來自每天進行工作的人員。 Traffic is the worst. It makes …

C#日期控件(js版)

js 腳本代碼: <script type"text/javascript"> //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- // 這是一個日歷 Javascript 頁…

python第三周測試_python第三周小測

1.讀取一個文件&#xff0c;顯示除了井號(#)開頭的行意外的所有行# -*- coding: utf-8 -*-"""Created on Tue May 28 09:37:08 2019author: Omega_Sendoh"""#打開文件f open("install-sh","r")#讀取文件的所有行&#xff0…