在這里工作也有半年了,有得有失. 近來(lái)心里十分的茅盾, 項(xiàng)目已經(jīng)黃色第5周了.我還是沒(méi)有去改變它. 我不知道是自己不行, 還是自己不想. 學(xué)了不多的自我激勵(lì)方法, 可是都不見(jiàn)效果. 也知道這個(gè)時(shí)候只有自己才能解救自己.
以下內(nèi)容轉(zhuǎn)載于
http://www.aspxboy.com/private/5294/default.aspx,感謝該作者的分享.
1.???? 如何設(shè)置一個(gè)From的邊界
2.???? 如何建立一個(gè)透明的From
3.???? 如何設(shè)置窗體在屏幕中的位置
4.???? 如何使最小化和最大化按鈕不可用
5.???? 如何使一個(gè)窗體不見(jiàn)
6.???? 如何設(shè)置使窗體成為非矩形的.
7.???? 如何使一個(gè)窗體在屏幕的最頂端.
8.???? 如何顯示一個(gè)Model和非Model的窗體
9.???? 如何制作一個(gè)MDI的窗體
10.? 如何將你的窗體不顯示在任務(wù)條上.
11.? 如何制作一個(gè)帶啟動(dòng)屏幕的窗體.
12.? 如何使你的窗體TrayIcon.
13.? 如何修改控制窗體的尺寸和長(zhǎng)寬尺寸.
14.? 如何建立一個(gè)Windows Explorer風(fēng)格的窗體.
15.? 如何設(shè)置初始的啟動(dòng)窗體
16.? 如何建立一個(gè)有背景圖像的窗體
==========================================================================================
1.???? 如何設(shè)置一個(gè)From的邊界
form總共有七種不同的邊界風(fēng)格讓你設(shè)置,你可以在設(shè)計(jì)時(shí)刻也可以運(yùn)行時(shí)通過(guò)代碼動(dòng)態(tài)的來(lái)設(shè)置它.這七種邊界風(fēng)格分別是:
none (System.Windows.Forms.FormBorderStyle.None )
fixed 3D (System.Windows.Forms.FormBorderStyle.Fixed3D)
fixed Dialog (System.Windows.Forms.FormBorderStyle.FixedDialog)
fixed Single(System.Windows.Forms.FormBorderStyle.FixedSingle)
fixed Tool Window(System.Windows.Forms.FormBorderStyle.FixedToolWindow)
sizable(system.windows.forms.formborderstyle.sizable)
sizable? Tool Window
(system.windows.forms.formborderstyle.sizabletoolwindow)
在設(shè)計(jì)方式下在vs.net IDE的 Properties window中設(shè)置FormBorderStyle屬性就可以了.
在運(yùn)行方式下你可以用代碼來(lái)完成:
dlgbx1.formborderstyle = System.Windows.Forms.FormBorderStyle.FixedDialog
這七種邊界類型VB6中就有,沒(méi)有什么大的變化,運(yùn)行方式下你需要對(duì)照不同的枚舉變量進(jìn)行設(shè)置.
?
2.???? 如何建立一個(gè)透明的From
你可以通過(guò)兩種方法在設(shè)計(jì)時(shí)刻和運(yùn)行時(shí)刻來(lái)做到這一點(diǎn).
設(shè)計(jì)時(shí)刻,你可以在vs.net IDE的 Properties window, 設(shè)置Opacity 屬性達(dá)到這個(gè)效果.這個(gè)值從0.0到1.0 . 0表示完全透明,1.0表示完全不透明.
運(yùn)行時(shí)刻你可以用下面的編碼設(shè)置窗體的opactiy屬性來(lái)做到.具體:
frmtransparentform.opacity = 0.76; ( C# )
看得出現(xiàn)在很簡(jiǎn)單了,你已經(jīng)不用再去了解什么alpha變量了.透明始終只是一種效果,不要濫用它.
?
3.???? 如何設(shè)置窗體在屏幕中的位置
你可以設(shè)置窗體的startposition屬性,vs.net一般給你一個(gè)保守的選項(xiàng)” WindowsDefaultLocation“ 這樣系統(tǒng)在Load窗體時(shí)將根據(jù)用戶當(dāng)前的計(jì)算機(jī)設(shè)置來(lái)確定一個(gè)值,你也可以在設(shè)計(jì)時(shí)將它改成另一個(gè)值”Center”.
如果你一定要在設(shè)計(jì)方式下確定窗體在屏幕出現(xiàn)的位置你可以先設(shè)置startposition為manual,然后設(shè)置location的x和y的值.
運(yùn)行時(shí)用代碼實(shí)現(xiàn)似乎更簡(jiǎn)潔一些:
? Form1.Location = new Point (100, 100) ( VB.NET )
當(dāng)然你也可以分別修改的Location的X和Y值,對(duì)應(yīng)的是窗體的Left和Top屬性,比如:
form1.left += 200 ( VB.NET )
form1.top -= 100 ( VB.NET )
另外一個(gè)屬性將也將影響窗體在屏幕的位置:desktoplocation 這個(gè)屬性主要是在你設(shè)置窗體的位置相對(duì)于任務(wù)欄時(shí)非常實(shí)用(當(dāng)你把任務(wù)條放在屏幕的頂或左邊時(shí),其實(shí)相應(yīng)改動(dòng)了desktop coordinates (0,0)),你可以這樣設(shè)置這個(gè)不出現(xiàn)在設(shè)計(jì)屬性窗口中的屬性,
form1.desktoplocation = new Point (100,100)
窗體在屏幕中的位置將主要取決于各自用戶具體的硬件和設(shè)置情況,所以保守的作法是用默認(rèn)的” WindowsDefaultLocation”或 ”Center”;專業(yè)的作法是自己先獲取系統(tǒng)的設(shè)置然后編碼動(dòng)態(tài)計(jì)算后進(jìn)行設(shè)置,不然很容易在屏幕上找不到你的窗體.
?
4.???? 如何使最小化和最大化按鈕不可用
在設(shè)置窗體的form.minimizebox和form.maximizebox 當(dāng)為True時(shí)表示顯示,False時(shí)表示不可.用編程方式見(jiàn)下:
frmmaxmin.minnimizebox = False ( VB.NET)
frmmaxmin.maxmnimizebox = True? ( VB.NET )
?
5.???? 如何使一個(gè)窗體不見(jiàn)
我想最直接的辦法是你調(diào)用 Hide()方法來(lái)做到這一點(diǎn).不過(guò)我想提供另一種方法,看了之后你會(huì)獲得一些其它的啟發(fā). ( VB.NET )
??? Private Const WS_EX_TOOLWINDOW As Int32 = &H80
??? Private Const WS_POPUP As Int32 = &H80000000
??? Private Const WS_VISIBLE As Int32 = &H10000000
??? Private Const WS_SYSMENU As Int32 = &H80000
??? Private Const WS_MAXIMIZEBOX As Int32 = &H10000
?
??? Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
??????? Get
??????????? Dim cp As System.Windows.Forms.CreateParams
??????????? cp = MyBase.CreateParams
??????????? cp.ExStyle = WS_EX_TOOLWINDOW
??????????? cp.Style = WS_POPUP Or WS_VISIBLE Or WS_SYSMENU Or WS_MAXIMIZEBOX
??????????? cp.Height = 0
??????????? cp.Width = 0
??????????? Return cp
??????? End Get
??? End Property
??? 原來(lái)是把Height 和Width都設(shè)置成0 ,我想這種方式和Hide()調(diào)用的底層可能是不同的。
?
6.???? 如何設(shè)置使窗體成為非矩形的.
這個(gè)問(wèn)題我想我提供的不是最專業(yè)的作法,至少它還不能達(dá)到我期望的那樣,也就是說(shuō)它在某些事件中它還會(huì)變回矩形.但至少我可以告訴你:如果試圖調(diào)用原來(lái)的win32’s API SetWindowRng是不行的,我曾如此的嘗試過(guò).現(xiàn)在你可能需要知道有關(guān)窗體的Region屬性
???? ' // ( VB.NET )?
??? Public Sub SetWindowRegion()
?
??????? Dim FormPath As System.Drawing.Drawing2D.GraphicsPath
??????? Dim Reg As Drawing.Region
??????? Dim lRet As Long
?
??????? FormPath = New Drawing2D.GraphicsPath()
??????? FormPath.AddEllipse(New Rectangle(0, 0, 250, 120))
?
??????? Me.Region = New Region(FormPath)
?
??? End Sub
?
??? Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
??????? Me.Region = Nothing
??????? SetWindowRegion()
??? End Sub
?
??? Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
????????? Me.Region = Nothing
????????? SetWindowRegion()
??? End Sub
?
7.???? 如何使一個(gè)窗體在屏幕的最頂端.
這是很實(shí)用的一個(gè)功能,現(xiàn)在你不用在調(diào)用其它api了,只用設(shè)置topmost 屬性為True就可以了.對(duì)于這個(gè)屬性在設(shè)計(jì)時(shí)刻和運(yùn)行時(shí)刻都是可以進(jìn)行修改的.代碼方式:
???????? myTopForm.TopMost = True ( VB.NET)
?
8.???? 如何顯示一個(gè)Model和非Model的窗體
model和modeless的窗體主要將取決于你的應(yīng)用,最多的是用在顯示對(duì)話框.當(dāng)你需要model的窗體時(shí)你調(diào)用myform. ShowDialog而非Model的調(diào)用MyForm.Show,對(duì)于ShowDialog有一個(gè)可選參數(shù)ower可以讓你為一個(gè)窗體建立父子關(guān)系.比如:
' Visual Basic
Private Sub mnuAbout_Click(…args…)
?? Dim f As New FormOption
?? f.ShowDialog Me
End Sub
有一點(diǎn)需要注意的是對(duì)于ShowDialog來(lái)說(shuō),當(dāng)執(zhí)行到這一句,窗體顯示,但這之后的代碼將不會(huì)執(zhí)行,只到窗口關(guān)閉之后才繼續(xù)執(zhí)行,而對(duì)于Show來(lái)說(shuō)是即時(shí)的,顯示窗體之后將立即執(zhí)行下面的代碼.
9.???? 如何制作一個(gè)MDI的窗體
1.???? 建立一個(gè)新的Windows Application項(xiàng)目
2.???? 分別加入兩個(gè)窗體Form1 、Form2
3.???? 設(shè)置Form1的IsMdiContainer屬性為True。使它成為MDI主窗體。
4.???? 在Form2中加入一個(gè)RichTextBox控件,并設(shè)置Dock為:Fill
5.???? 在Tools 窗體中拖一個(gè)MainMenu到窗體Form1,然后建立一個(gè)菜單File|Windows|Help三個(gè)菜單項(xiàng),F(xiàn)ile中包括New、Exit菜單項(xiàng);Windows中包括Cascade、Horizontal等。
6.???? 設(shè)置Windows菜單項(xiàng)的MdiList屬性=True, 這樣每一個(gè)MDI子窗口將自動(dòng)加在Windows菜單項(xiàng)下面。
7.???? 雙擊New菜單項(xiàng),然后加入以下代碼:
???? private void menuNew_Click(object sender, System.EventArgs e)
???? {
???????? Form2? NewMdiChild ;
???????? NewMdiChild = new Form2() ;
???????? NewMdiChild.MdiParent = this ;
???????? NewMdiChild.Show() ;
?
???? }
8.???? 在Windows的Cascade等菜單項(xiàng)中加入以下代碼:
???? private void menuWindowCasca_Click(object sender, System.EventArgs e)
???? {
???????? this.LayoutMdi( MdiLayout.Cascade) ;
????????
???? }
另外還有以下常用的:
this.layoutmdi(mdilayout.tilehorizontal);
this.layoutmdi(mdilayout.tilevertical);
9.???? F5運(yùn)行。
最終版的vs.net 不知是否會(huì)有一個(gè)通用的模板,不過(guò)用完全手工的方式產(chǎn)生一個(gè)MDI的窗口,顯得有些繁瑣,不如VS.NET的IDE方式下那么簡(jiǎn)潔。
?
10.???? 如何將你的窗體不顯示在任務(wù)條上.
當(dāng)窗體的邊界風(fēng)格是tools Window時(shí)它都不會(huì)出現(xiàn)在任務(wù)條上的.另外上面標(biāo)題5中介紹的方法不僅窗體看不見(jiàn),也不會(huì)出現(xiàn)在任務(wù)條上.
??? 如果你現(xiàn)在在Dotnet的世界,這件事也變的簡(jiǎn)單,任何的Winform窗體現(xiàn)在都有ShowInTaskbar屬性,所以你只要簡(jiǎn)單的設(shè)置這個(gè)屬性就可以了。同樣你可以選擇在屬性窗口中將ShowInTaskbar由True改為False。或是用代碼的方式:
??? MyTaskBarFrm.ShowInTaskbar = false ; ( C# )
?
11.???? 如何制作一個(gè)帶啟動(dòng)屏幕的窗體.
需要你準(zhǔn)備兩個(gè)winform的窗體,一個(gè)叫它:splashscreen,把它做成一個(gè)漂亮的窗體。然后你需要一個(gè)主窗體叫它:form1吧,然后在這個(gè)窗體加入下面的代碼。
???? // ( C# )
???? protected override void OnLoad ( System.EventArgs e )
???? {
???????? //make load take a long time
???????? Thread.Sleep(2000);
?
???????? base.OnLoad(e);
?
???? }
然后在main中加入這樣的代碼:
???? [STAThread]
???? static void Main()
???? {
???????? SplashScreen splashForm = new SplashScreen();
???????? splashForm.Show();
?
???????? Form1 mainForm = new Form1() ;
???????? mainForm.Load += new EventHandler(splashForm.MainScreen_Load);
???????? Application.Run(mainForm);
?
???? }
不要忘了加上對(duì)threading的引用: using System.Threading;
?
12.???? 如何使你的窗體TrayIcon.
實(shí)現(xiàn)這個(gè)功能你可以運(yùn)用notifyicon控件來(lái)達(dá)到,從tools Windows中將NotifyIcon拖到你的窗體上然后在下面的事件加入如下代碼,F(xiàn)5。
????
?? ' // VB.NET
??? Private mIconA As Icon = New Icon("Icon1.ico")
??? Private mIconB As Icon = New Icon("Icon2.ico")
??? Private mIconDisplayed As Boolean
???
??? Public Sub New()
??????? MyBase.New
?
??????? Form1 = Me
?
??????? 'This call is required by the Win Form Designer.
??????? InitializeComponent
?
??????? 'TODO: Add any initialization after the InitializeComponent() call
???????
??????? 'this form isn't used directly so hide it immediately
??????? Me.Hide()
???????
??????? 'setup the tray icon
??????? Initializenotifyicon()
??? End Sub
???
??? Private Sub Initializenotifyicon()
??????? 'setup the default icon
??????? notifyicon = New System.Windows.Forms.NotifyIcon()
??????? NotifyIcon.Icon = mIconA
??????? NotifyIcon.Text = "Right Click for the menu"
??????? NotifyIcon.Visible = True
??????? mIconDisplayed = True
?
??????? 'Insert all MenuItem objects into an array and add them to
??????? 'the context menu simultaneously
??????? Dim mnuItms(3) As MenuItem
??????? mnuItms(0) = New MenuItem("Show Form...", New EventHandler(AddressOf Me.ShowFormSelect))
??????? mnuItms(0).DefaultItem = True
??????? mnuItms(1) = New MenuItem("Toggle Image", New EventHandler(AddressOf Me.ToggleImageSelect))
??????? mnuItms(2) = New MenuItem("-")
??????? mnuItms(3) = New MenuItem("Exit", New EventHandler(AddressOf Me.ExitSelect))
??????? Dim notifyiconMnu As ContextMenu = New ContextMenu(mnuItms)
??????? notifyicon.ContextMenu = notifyiconMnu
??? End Sub
?
??? Public Sub ShowFormSelect(ByVal sender As Object, ByVal e As System.EventArgs)
??????? 'Display the settings dialog
??????? Dim SettingsForm As New SettingsForm()
??????? SettingsForm.ShowDialog()
?
??? End Sub
?
??? Public Sub ToggleImageSelect(ByVal sender As Object, ByVal e As System.EventArgs)
??????? 'called when the user selects the 'Toggle Image' context menu
?
??????? 'determine which icon is currently visible and switch it
??????? If mIconDisplayed Then
??????????? 'called when the user selects the 'Show Form' context menu
??????????? NotifyIcon.Icon = mIconB
??????????? NotifyIcon.Text = "Sad"
??????????? mIconDisplayed = False
??????? Else
??????????? NotifyIcon.Icon = mIconA
??????????? NotifyIcon.Text = "Happy"
??????????? mIconDisplayed = True
??????? End If
?
??? End Sub
?
??? Public Sub ExitSelect(ByVal sender As Object, ByVal e As System.EventArgs)
??????? 'called when the user selects the 'Exit' context menu
?
??????? 'hide the tray icon
??????? NotifyIcon.Visible = False
?
??????? 'close up
??????? Me.Close()
??? End Sub
?
??? 'Form overrides dispose to clean up the component list.
??? Public Overloads Overrides Sub Dispose()
??????? MyBase.Dispose()
??????? components.Dispose()
??? End Sub
??? 圖標(biāo)文件你自己準(zhǔn)備了,如果成功你可以看到有關(guān)NotifyIcond的各種功能了。
?
13.???? 如何修改控制窗體的尺寸和長(zhǎng)寬尺寸.
主要是修改winform的size, Width 和Height屬性。同樣它們都是可以在設(shè)計(jì)和運(yùn)行時(shí)刻進(jìn)行修改和設(shè)置。
form1.size = New System.Drawing.Size(100, 100) ( VB.NET )
form1.width += 100? (VB.NET )
form1.height -= 20? (VB.NET )
?
14.???? 如何建立一個(gè)Windows Explorer風(fēng)格的窗體.
1.建立一個(gè)新的windows Application
2.從toolbox窗口拖一個(gè)treeview控件、、一個(gè)splitterk控件、一個(gè)listview控件,分別在屬性窗口中設(shè)置treeview的dock屬性為::left;設(shè)置listview控件的dock屬性為:fill
3: F5 運(yùn)行
?
15.???? 如何設(shè)置初始的啟動(dòng)窗體
無(wú)論是c#還是visual Basic的Winform項(xiàng)目中你都可以在Solution Explorer窗口中右鍵你的Project,然后選擇屬性,從你Project的屬性頁(yè)中選擇你啟動(dòng)的窗體或是Main()方法。
有些不同的是在目前的vs.net Beta2中C#項(xiàng)目會(huì)自動(dòng)產(chǎn)生Main() 方法,Visual Basic.Net 的項(xiàng)目中你必須自己添加Main()代碼,C#中你可以將Form1改成任何你可以啟動(dòng)的窗體名:
???? // ( C# )
??????? static void Main()
??????? {
??????????? Application.Run(new Form1());
??????? }
?
16.???? 如何建立一個(gè)有背景圖像的窗體
現(xiàn)在的winform中所有的窗體都有一個(gè)backgroundimage屬性,只用對(duì)它賦值就可以了。普通窗體可以在運(yùn)行模式也可以在運(yùn)行模式完成這個(gè)設(shè)置。比如在initializecomponent()或窗體的構(gòu)造函數(shù)中加入這樣的代碼:
this.backgroundimage = new Bitmap("C:\\DotNetApp\\WinForm\\Tile.bmp" ) ;
??? 對(duì)于MDI的主窗體要麻煩一些,在VS.NET的IDE窗體中,當(dāng)你設(shè)置完IsMdiContainer屬性為True后,你需要查看一下InitializeComponent()中是否有這樣的代碼 ( C# ):
??????????? this.mdiClient1.Dock = System.Windows.Forms.DockStyle.Fill;
??????????? this.mdiClient1.Name = "mdiClient1";
或是在窗口的屬性窗口組合框中看到mdiclient1 System.Windows.Forms.mdiClient.這就是主MDI窗口,不過(guò)我沒(méi)有在dotnet的文檔中找到任何有關(guān)System.Windows.Forms.mdiClient的說(shuō)明。然后你可以在InitializeComponent()或窗體的構(gòu)造函數(shù)中加入這樣的代碼( C# ):
this.mdiclient1.backgroundimage? = new Bitmap("C:\\DotNetApp\\WinForm\\Tile.bmp" ) ;
??? 網(wǎng)上有一個(gè)ImageView的例子,里面演示了給MDI主窗體中背景上加入一行Logo文字的方法,這樣使你的MDI窗體看起來(lái)很商業(yè)化,具體的你可以這樣做:
1.?? 先在VS.NET 自動(dòng)產(chǎn)生代碼的InitializeComponent中看是否有這樣的語(yǔ)句( C# ):
this.controls.addrange(new System.Windows.Forms.Control[] {this.mdiClient1});
??? 又是這個(gè)mdiClient (haha)
2.?? 建立以下兩個(gè)函數(shù)用于顯示這個(gè)Logo字符:
// ( C# )
??????? protected? void Mdi_OnPaint (? Object s,? System.Windows.Forms.PaintEventArgs e )
??????? {
??????????? Control c = (Control)s;
???????????
?
??????????? Rectangle r1 = c.ClientRectangle;
??????????? r1.Width -= 4;
??????????? r1.Height -= 4;
?
??????????? Rectangle r2 = r1;
??????????? r2.Width -= 1;
??????????? r2.Height -= 1;
?
??????????? Font f = new Font("Tahoma", 8);
?
??????????? String str = "MyWinform.NET ?2001 MyWinform Application V1.0";
?
??????????? StringFormat sf = new StringFormat();
??????????? sf.Alignment = StringAlignment.Far;
??????????? sf.LineAlignment = StringAlignment.Far;
?
??????????? e.Graphics.DrawString(str, f, new SolidBrush(SystemColors.ControlDarkDark), r1, sf);
??????????? e.Graphics.DrawString(str, f, new SolidBrush(SystemColors.ControlLight), r2, sf);
?
??????? }
?
??????? protected? void Mdi_OnResize ( Object s ,? System.EventArgs e )
??????? {
???????????
??????????? Control c = (Control)s;
??????????? c.Invalidate();
??????? }
3.?? 在InitializeComponent()或窗體的構(gòu)造函數(shù)中加入這樣的代碼:
( C# )
??? this.Controls[0].Paint += new PaintEventHandler( Mdi_OnPaint ) ;
??? this.Controls[0].Resize += new EventHandler( Mdi_OnResize ) ;
??????? 注意將它加在InitializeComponent()后面或是在InitializeComponent函數(shù)中this.Controls.AddRange函數(shù)之后。
昨天下班是計(jì)算機(jī)已經(jīng)關(guān)機(jī)了。可今天早上一開(kāi)到啟動(dòng)Windows時(shí)系統(tǒng)一片藍(lán)屏。我用安全模式也進(jìn)入不了。后來(lái)把硬盤拆下來(lái),安裝到同事的機(jī)子上進(jìn)行硬盤檢查。如果分區(qū),壞道等。結(jié)果沒(méi)有什么問(wèn)題,但為了資料的安全,我把有用的資料都copy到他機(jī)子上。把硬盤重新安裝回我的機(jī)子上。結(jié)果怎么樣。。。
神了一點(diǎn)問(wèn)題也沒(méi)有。真是虛驚一場(chǎng)呀。
我用記事本打開(kāi)一個(gè)以前的分頁(yè)程序。把其中的一部份代碼copy到我的現(xiàn)在的程序中,可是編譯器提示illegal character \12288錯(cuò)誤。我按它提示的錯(cuò)誤找到發(fā)生錯(cuò)誤的行。我用別的變量名試了一下是可以的。難道是這個(gè)變量名輸入時(shí)用了中文的輸入法。我check一下,可是還是沒(méi)有解決。我又重新聲明了一個(gè)與這個(gè)變量名一樣的變量,把原來(lái)的注釋起來(lái)。后來(lái)發(fā)現(xiàn)可以了,我再把現(xiàn)在的注釋掉,用原來(lái)的變量,還是不行。我把它刪除掉重新寫了一遍包括空格也刪除。OK,就可以了。我想可能還是有中文的輸入字符或是空格。
以面的問(wèn)題可真是不是問(wèn)題的問(wèn)題,如果遇到同樣的問(wèn)題的朋友看看是否也是犯了同樣的錯(cuò)。
最后發(fā)現(xiàn)是一個(gè)中文的空格,我在刪除該變量時(shí)發(fā)現(xiàn)有一個(gè)空格的距離較大。
因我的機(jī)子內(nèi)存才512M要運(yùn)行JBuilder2006,還要運(yùn)行oracle9i時(shí)速度很慢,所以我先把oracle的幾個(gè)服務(wù)關(guān)了。后來(lái)我要使用oracle是一直連接不上,提示“沒(méi)有TNS監(jiān)聽(tīng)”。我一查看服務(wù),果然那個(gè)oracleOraHome90TNSListener沒(méi)有啟動(dòng),我一接點(diǎn)擊啟動(dòng),可還是提示那句沒(méi)有TNS監(jiān)聽(tīng)。這是為什么呢?lt;br />第一種可能是否把計(jì)算機(jī)名改了。如果是就按下面的步驟做?lt;br />把安裝目錄下的listener.ora打開(kāi)察看。如:d:\oracle\ora90\network\admin\listener.ora.
打開(kāi)該配置文件后發(fā)現(xiàn)如下一段配置信息:
LISTENER?=
??(DESCRIPTION_LIST?=
????(DESCRIPTION?=
??????(ADDRESS_LIST?=
????????(ADDRESS?=?(PROTOCOL?=?IPC)(KEY?=?EXTPROC0))
??????)
??????(ADDRESS_LIST?=
????????(ADDRESS?=?(PROTOCOL?=?TCP)(HOST?=?local)(PORT?=?1521))
??????)
????)
??)
看到這一行HOST=local這個(gè)是計(jì)算機(jī)名字,這個(gè)名字要與現(xiàn)在的計(jì)算機(jī)名對(duì)應(yīng)。如果不知道自己的計(jì)算機(jī)名是什么可以到“我的電腦”的屬性中有一個(gè)“網(wǎng)絡(luò)標(biāo)識(shí)”的tab?你在完整的計(jì)算機(jī)名稱后面看到的就是你的計(jì)算機(jī)名了?lt;br />以下內(nèi)容轉(zhuǎn)載http://www3.ccw.com.cn/club/essence/200202/8252.htm版權(quán)歸原作?
近來(lái),瀏覽BBS時(shí),常看到“急急急!如何啟動(dòng)OMS?”的字眼,就針對(duì)以上這類問(wèn)題,我有些經(jīng)驗(yàn)想和大家共同分享?lt;br />能否正常啟動(dòng)OEM或OMS關(guān)鍵有以下兩點(diǎn):
????第一.Oracle的系統(tǒng)服務(wù)是否開(kāi)啟;
????第二.登錄時(shí)用的用戶名和口令是否正確?lt;br />
????那么先針對(duì)第一點(diǎn)談?wù)凮racle的系統(tǒng)服務(wù)。在完全安裝的情況下,Oracle的系統(tǒng)服務(wù)共?1項(xiàng):
????1.Oracle OLAP 9.0.1.0.1
????2.Oracle OLAP Agent
????3.OracleOraHome90Agent
????4.OracleOraHome90ClientCache
????5.OracleOraHome90HTTPServer
????6.OracleOraHome90ManagementServer(0.5M)
????7.OracleOraHome90PagingServer
????8.OracleOraHome90SNMPPeerEncapsulator
????9.OracleOraHome90SNMPPeerMasterAgent
????10.OracleOraHome90TNSListener(5.2M)
????11.OracleServiceORACLE(70M)
????????(注:OraHome90是可以在安裝時(shí)改變的Oracle的主目錄名稱,是安裝時(shí)的默認(rèn)?
????其中最重要的服務(wù)有3個(gè),分別是OracleOraHome90ManagementServer、OracleOraHome90TNSListener?lt;br />OracleServiceORACLE。下面就來(lái)看一下有哪些啟動(dòng)錯(cuò)誤與它們有關(guān)?lt;br />
????1.Oracle系統(tǒng)提示:Ora-12541:TNS:沒(méi)有監(jiān)聽(tīng)器;
????2.操作系統(tǒng)提示:在本地計(jì)算機(jī)無(wú)法啟動(dòng)OMS服務(wù)
?????????????????????錯(cuò)誤?053:服務(wù)并未及時(shí)響應(yīng)來(lái)控制請(qǐng)求附帶?lt;br />????以上兩種錯(cuò)誤提示大都是由OracleOraHome90TNSListener監(jiān)聽(tīng)服務(wù)引起的?lt;br />解決方法:控制面?>管理工具->服務(wù)->右鍵單擊“OracleOraHome90TNSListener”,再單擊“啟動(dòng)”?lt;br />
????3.Oracle系統(tǒng)提示:Ora-12500:TNS:監(jiān)聽(tīng)程序無(wú)法啟動(dòng)專用服務(wù)器進(jìn)程;
????該錯(cuò)誤是由OracleServiceORACLE專用服務(wù)器進(jìn)程引起的?lt;br />解決方法:控制面?>管理工具->服務(wù)->右鍵單擊“OracleServiceORACLE”,再單擊“啟動(dòng)”?lt;br />
????4.Oracle系統(tǒng)提示:VTK-1000:無(wú)法連接到Management Server?lt;br />???????????????????????請(qǐng)驗(yàn)證您已輸入Oracle Management Server的正確主機(jī)名和狀態(tài)?lt;br />????該錯(cuò)誤引起的原因有兩種,一是OracleOraHome90ManagementServer還沒(méi)啟動(dòng);二是沒(méi)有輸入主機(jī)名?lt;br />解決方法:控制面?>管理工具->服務(wù)->右鍵單擊“OracleOraHome90ManagementServer”,再單擊“啟動(dòng)?
或是輸入您這臺(tái)計(jì)算機(jī)的完整名稱?lt;br />小結(jié):這三個(gè)服務(wù)的啟動(dòng)或關(guān)閉還有先后的順序。一般來(lái)講,啟動(dòng)時(shí)必須先啟動(dòng)OracleOraHome90TNSListener啟動(dòng)OracleOraHome90ManagementServer或OracleServiceORACLE,在啟動(dòng)OracleOraHome90ManagementServer時(shí),同時(shí)也啟動(dòng)了OracleServiceORACLE。而關(guān)閉時(shí)必須先關(guān)閉OracleOraHome90ManagementServer再關(guān)閉OracleOraHome90TNSListener或OracleServiceORACLE,關(guān)閉OracleOraHome90ManagementServer時(shí),若有提示輸入用戶名和口令,請(qǐng)輸入sysman的用戶名和口令,以確保成功的執(zhí)行。有些其他提示如:資源已被占用,I/O重復(fù),端口已被使用等等之類的話,那最好與系統(tǒng)管理員聯(lián)系,再尋求解決辦法?lt;br />
?
type
Status report
message
/zz3in1/SrvTest
description
The requested resource (/zz3in1/SrvTest) is not available.
這是為什呢?
用過(guò)了../../SrvTest 這個(gè)是不行的。././SrvTest這樣可以。還有./SrvTest也可以。
用document.getElementById("01").innerHTML/innerText都可以。如:<tr><td id="01">Hello</td></tr>要把Hello取出來(lái)就可以用document.getElementById("01").innerHTML/innerText。
但是用innerHTML與用innerText有什么區(qū)別嗎?用innerHTML會(huì)把這個(gè)標(biāo)記中的所有HTML標(biāo)記與值取出來(lái)。innerText只會(huì)取最后的值。
如果你在安裝oracle8i時(shí),系統(tǒng)會(huì)自己給你安裝一個(gè)JDK1.1的或1.2的。然后你安裝JDK1.5后,在系統(tǒng)環(huán)境中設(shè)置了JAVA_HOME是JDK1.5的,path中也設(shè)置了javaroot\JDK1.5\bin可是你怎么樣也不能用JDK1.5中的命令。C:\Documents and Settings\Administrator>java
Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'
has value '1.1', but '1.2' is required.
改注冊(cè)表HKEY_LOCAL_MACHINE???中的SOFTWARE--JavaSoft--Java Runtime Environment--CurrentVersion的值改成了1.5
系統(tǒng)會(huì)提示你:C:\Documents and Settings\Administrator>java
Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'
has value '1.5', but '1.2' is required.這是為什么呢?因你的系統(tǒng)中安裝了舊的版本JDK,而且有程序程序有使用到它。這時(shí)你只要在當(dāng)前的用戶系統(tǒng)環(huán)境下設(shè)置一個(gè)JAVA_HOME(可以不要)并且在系統(tǒng)環(huán)境的path的最前面加上javaroot\jdk1.5\bin。這樣就OK了。你可以把DOS窗口關(guān)閉再開(kāi)啟。WINDOWS2K不要重啟計(jì)算機(jī)。WINDOWS98的要重啟。
以下信息是轉(zhuǎn)載http://www.aaunion.net/cn/blog/more.asp?name=magicmao&id=687
document
文擋對(duì)象 - JavaScript腳本語(yǔ)言描述
---------------------------------------------------------------------
注:頁(yè)面上元素name屬性和JavaScript引用的名稱必須一致包括大小寫
??
否則會(huì)提示你一個(gè)錯(cuò)誤信息 "引用的元素為空或者不是對(duì)象"
---------------------------------------------------------------------
?
對(duì)象屬性
document.title???????????? //
設(shè)置文檔標(biāo)題等價(jià)于HTML的<title>標(biāo)簽
document.bgColor?????????? //
設(shè)置頁(yè)面背景色
document.fgColor?????????? //
設(shè)置前景色(文本顏色)
document.linkColor???????? //
未點(diǎn)擊過(guò)的鏈接顏色
document.alinkColor?????? ?//
激活鏈接(焦點(diǎn)在此鏈接上)的顏色
document.vlinkColor??????? //
已點(diǎn)擊過(guò)的鏈接顏色
document.URL?????????????? //
設(shè)置URL屬性從而在同一窗口打開(kāi)另一網(wǎng)頁(yè)
document.fileCreatedDate?? //
文件建立日期,只讀屬性
document.fileModifiedDate? //
文件修改日期,只讀屬性
document.fileSize????????? //
文件大小,只讀屬性
document.cookie??????????? //
設(shè)置和讀出cookie
document.charset?????????? //
設(shè)置字符集 簡(jiǎn)體中文:gb2312
---------------------------------------------------------------------
對(duì)象方法
document.write()????????????????? //
動(dòng)態(tài)向頁(yè)面寫入內(nèi)容
document.createElement(Tag)?????? //
創(chuàng)建一個(gè)html標(biāo)簽對(duì)象
document.getElementById(ID)?????? //
獲得指定ID值的對(duì)象
document.getElementsByName(Name)? //
獲得指定Name值的對(duì)象
---------------------------------------------------------------------
?
images
集合(頁(yè)面中的圖象)
?
a)
通過(guò)集合引用
document.images???????????? //
對(duì)應(yīng)頁(yè)面上的<img>標(biāo)簽
document.images.length????? //
對(duì)應(yīng)頁(yè)面上<img>標(biāo)簽的個(gè)數(shù)
document.images[0]???????? ?//
第1個(gè)<img>標(biāo)簽
document.images[i]???????? ?//
第i-1個(gè)<img>標(biāo)簽
?
b)
通過(guò)nane屬性直接引用
<img name="oImage">
document.images.oImage????? //document.images.name
屬性
?
c)
引用圖片的src屬性
document.images.oImage.src? //document.images.name
屬性.src
?
d)
創(chuàng)建一個(gè)圖象
var oImage
oImage = new Image()
document.images.oImage.src="/1.jpg"
//
同時(shí)在頁(yè)面上建立一個(gè)<img>標(biāo)簽與之對(duì)應(yīng)就可以顯示
?
<html>
<img name=oImage>
<script language="javascript">
?? var oImage
?? oImage = new Image()
?? document.images.oImage.src="/1.jpg"
</script>
</html>
?
----------------------------------------------------------------------
?
forms
集合(頁(yè)面中的表單)
?
a)
通過(guò)集合引用
document.forms???????????????? //
對(duì)應(yīng)頁(yè)面上的<form>標(biāo)簽
document.forms.length????????? //
對(duì)應(yīng)頁(yè)面上<form>標(biāo)簽的個(gè)數(shù)
document.forms[0]????????????? //
第1個(gè)<form>標(biāo)簽
document.forms[i]????????????? //
第i-1個(gè)<form>標(biāo)簽
document.forms[i].length????? ?//
第i-1個(gè)<form>中的控件數(shù)
document.forms[i].elements[j]? //
第i-1個(gè)<form>中第j-1個(gè)控件
?
b)
通過(guò)標(biāo)簽name屬性直接引用
<form name="Myform"><input name="myctrl"></form>
document.Myform.myctrl??????? ?//document.
表單名.控件名
?
-----------------------------------------------------------------------
<html>
<!--Text
控件相關(guān)Script-->
<form name="Myform">
<input type="text" name="oText">
<input type="password" name="oPswd">
<form>
<script language="javascript">
//
獲取文本密碼框的值
document.write(document.Myform.oText.value)
document.write(document.Myform.oPswd.value)
</script>
</html>
-----------------------------------------------------------------------
<html>
<!--Select
控件相關(guān)Script-->
<form name="Myform">
<select name="oSelect">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
</form>
?
<script language="javascript">
?? //
遍歷select控件的option項(xiàng)
?? var length
?? length=document.Myform.oSelect.length
?? for(i=0;i<length;i++)
?? document.write(document.Myform.oSelect[i].value)
</script>
?
<script language="javascript">
?? //
遍歷option項(xiàng)并且判斷某個(gè)option是否被選中
?? for(i=0;i<document.Myform.oSelect.length;i++){
?? if(document.Myform.oSelect[i].selected!=true)
?
? document.write(document.Myform.oSelect[i].value)
?? else
?? document.write("<font color=red>"+document.Myform.oSelect[i].value+"</font>")??
?? }
</script>
?
<script language="javascript">
?? //
根據(jù)SelectedIndex打印出選中的option
?? //(0
到document.Myform.oSelect.length-1)
?? i=document.Myform.oSelect.selectedIndex
?? document.write(document.Myform.oSelect[i].value)
</script>
?
<script language="javascript">
?? //
動(dòng)態(tài)增加select控件的option項(xiàng)
?? var oOption = document.createElement("OPTION");
?? oOption.text="4";
?? oOption.value="4";
?? document.Myform.oSelect.add(oOption);
</script>
<html>
-----------------------------------------------------------------------
<Div id="oDiv">Text</Div>
document.all.oDiv????????????????????? ?//
引用圖層oDiv
document.all.oDiv.style????????????????
document.all.oDiv.style.display=""????? //
圖層設(shè)置為可視
document.all.oDiv.style.display="none"? //
圖層設(shè)置為隱藏
/*document.all
表示document中所有對(duì)象的集合
只有ie支持此屬性,因此也用來(lái)判斷瀏覽器的種類*/
-----------------------------------------------------------------------
我寫了一個(gè)測(cè)試oracle8.1的連接程序。用thin的方式連接。URL:jdbc:oracle:thin:@127.0.0.1:1521:orc;這個(gè)URL是正確的。我在thin與@中間少寫一個(gè)冒號(hào)。這是一個(gè)很低級(jí)的錯(cuò)誤,以后要小心呀。