none
form1 輸入 & form2 顯示的問題 RRS feed

  • 問題

  • 各位前輩你們好~
    我是一位VB 2008的入門新手~有個問題想請教
    如果我在 form1 內放入 (Textbox1  Textbox2  Textbox3)三個物件及一個 Button1
    當我按下Button1時讓(Textbox1  Textbox2  Textbox3)我所輸入的文字或數字
    顯示在From2 裡頭~目前我在Form2 放的圖片作背景.若是我要將
    Form1 (Textbox1  Textbox2  Textbox3) 輸入的文字按下Button1後顯示在Form2
    圖片的指定位置上.然後列印出來.請問我該怎麼做.可否給我個範例呢?謝謝各位
    2009年9月16日 下午 01:40

解答

所有回覆

  • 參考 蹂躪 的文章
    [.NET Concept][C#][VB.NET].NET兩個表單間的資料互通
    http://www.dotblogs.com.tw/larrynung/archive/2009/03/24/7669.aspx#10101
    .NET菜鳥自救會 http://www.dotblogs.com.tw/chou/
    • 已提議為解答 bauannModerator 2009年9月16日 下午 04:17
    • 已標示為解答 Lolota Lee 2009年9月24日 上午 05:48
    2009年9月16日 下午 01:47
    版主
  • 謝謝.小歐大大
    我先研究一下.若有問題再發問
    當然也要.謝謝.蹂躪大大的範例喔
    2009年9月16日 下午 02:15
  • 不好意思~我看了 一下代碼~我試著寫進VB 2008好像不行
    我下載範例也打不開~可以有哪位大大~寫一個VB 2008 的範例讓我參考嗎?
    還有我想問 VB.NET & VS 2008 & VB 2008
    這三者是一樣的編譯程式嗎?只是說法不同而已~還是這三種編譯程式
    都不一樣呢?
    因為我是買了一本VB 2008的入門書自學~所以很多蓋念都不是很清楚
    會問一些很白痴的問題~請各位見諒
    2009年9月17日 上午 08:34
  • Public Class Form1
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            With Form2
                .Show()
                .Value1 = TextBox1.Text
                .Value2 = TextBox2.Text
                .Value3 = TextBox3.Text
            End With
        End Sub
    End Class
    
    
    Public Class Form2
    
    #Region "Property"
        Property Value1() As String
            Get
                Return TextBox1.Text
            End Get
            Set(ByVal value As String)
                TextBox1.Text = value
            End Set
        End Property
    
        Property Value2() As String
            Get
                Return TextBox2.Text
            End Get
            Set(ByVal value As String)
                TextBox2.Text = value
            End Set
        End Property
    
        Property Value3() As String
            Get
                Return TextBox3.Text
            End Get
            Set(ByVal value As String)
                TextBox3.Text = value
            End Set
        End Property
    #End Region
    
    End Class
    

    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2009年9月17日 上午 09:01
  • 謝謝您~蹂躪大大
    我試了一下OK了~我把FORM2 的textbox改成label也可以正常顯示~
    這正是我要研究的程式碼~真是太好了~我會試著加入列印物件試試看
    以下這個程式碼的運用~我在我的書本裡都找不到
    可以大概的幫我加上註解嗎?謝謝您

    Public Class Form2

    #Region "Property"
        Property Value1() As String
            Get
                Return TextBox1.Text
            End Get
            Set(ByVal value As String)
                TextBox1.Text = value
            End Set
        End Property
    #End Region

    End Class
    2009年9月17日 上午 09:27
  • Hi,

    你的書不是初學者看的吧
    屬性是最基本的語法耶
    Public Class Form2
    
    #Region "Property"  '設定折疊區塊
    
        '設定Value1屬性其形態為String
        Property Value1() As String
            Get 
                Return TextBox1.Text  '回傳TextBox.Text當屬性的回傳值
            End Get
            Set(ByVal value As String)
                TextBox1.Text = value '把屬性的設定值設到TextBox1.Text
            End Set
        End Property
    #End Region
    
    End Class

    More

    另外附上MSDN的閱讀方式

    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2009年9月17日 上午 09:36
  • 謝謝~蹂躪
    好多參考資料喔~嗯我會慢慢的把它弄懂
    現在我連什麼是MSDN都還搞不清楚
    看來我得多用功才行
    2009年9月17日 上午 10:28
  • 請問~還是這個問題
    如果我在FORM1輸入完成按下 Button ~讓輸入的文字顯示在FORM2~
    或不顯示直接進入列表機選單~選擇後列印FORM2
    我要怎麼在FORM2的其中一個 Label 累計列印次數呢?
    也就是說~每列印一次時label都會加1
    謝謝
    2009年9月17日 下午 03:54
  • 在Form1多一個屬性, 這個屬性關連一個Form1 的全域變數, 你每列印一次就把變數加1
    Form2則去讀取和這個全域變數關連的屬性值. 意思和之前蹂躪講的都一樣.
    只是變成
    Private Print_count as integer = 0
    Public Property Value_Print_Count as integer
             Get
                Return Print_count   '回傳Print_count 當屬性的回傳值
            End Get
            Set(ByVal value As String)
                Print_count = value '把屬性的設定值設到Print_count
            End Set
    End Property

    Button.Click事件就把Print_Count +=1

    說穿了, 前面蹂躪講的東西變化一下就好了. 你的問題本質是沒有變的.


    學而不思則罔, 思而不學則殆. 寫程式無他, 唯勤而已.
    2009年9月17日 下午 05:34
    版主
  • 謝謝 Bill
    我剛註冊也剛學習VB~
    我覺得這裡的每一位前輩都好專業喔
    也引親切~讓我學到好多東西
    若有疑問我再提出
    覺得學習寫程式~真的很有趣

    總之~非常謝謝各位的執導
    2009年9月18日 上午 05:47
  • Hi bill大大
    我試了一下不行耶
    不知道哪裡出了問題
    如過按照蹂躪大大寫的程式碼
    按下Button1後列印且在label中顯示
    當我下一次執行程式時按下Button1後
    label會加1累計
    我要怎麼改呢?
    2009年9月18日 上午 10:49
  • 把您的程式貼出來吧,不然也不曉得您改了什麼地方?下次執行程式是指程式關閉再執行嗎?這樣就需要把值存在外部設定檔...
    2009年9月18日 下午 12:25
  • Hi Joe
    是的我的下次執行是只列印完成後關閉
    下次開啟程式再列印時會保留上次結束列印的值
    再加1
    因為我還是門外漢~現在單憑一本書在學習
    我在寫入的時候就已經出現問題有些指令出現去齒狀藍色的線
    因為我沒有關於列印指令的書籍網路上找了好久
    也都沒有類似的問題~所以可否提供範例加上註解
    我可以利用假日來研究一下~謝謝感激不盡

    2009年9月18日 下午 01:15
  • Hi,
    把你程式中的.Show()
    改為.ShowDialog()試試
    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2009年9月18日 下午 02:31
  • Public Class Form1

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            With Form2
                .ShowDialog()
                .Value1 = TextBox1.Text
                .Value2 = TextBox2.Text
                .Value3 = TextBox3.Text
                .Value4 = _Print_Count

            End With
        End Sub

      
    End Class

    Public Class Form2

    #Region "Property"
        Property Value1() As String
            Get
                Return Label1.Text
            End Get
            Set(ByVal value As String)
                Label1.Text = value
            End Set
        End Property

        Property Value2() As String
            Get
                Return Label2.Text
            End Get
            Set(ByVal value As String)
                Label2.Text = value
            End Set
        End Property

        Property Value3() As String
            Get
                Return Label3.Text
            End Get
            Set(ByVal value As String)
                Label3.Text = value
            End Set
        End Property

        Private Print_count As Integer = 0
        Public Property Value4 Print Count() As Integer
            Get
                Return Print_count
            End Get
            Set(ByVal value As String)
                Print_count = value
            End Set
        End Property

    #End Region

    End Class



    我知道這樣絕對是錯誤的程式碼
    現在的問題是~我在FORM1  TextBox1 輸入 按下Button 顯示在 FORM2 的 Label
    這個部分是沒問題的可以正常顯示

    但是我要將 FORM2的整個頁面~在按下FORM1 button同時~列印
    並將列印次數顯示在FORM2的其中一個 label 上.一併列印出來
    也就是每列印一次加1~這裏我就完全無頭緒了~請各位大大指點.指點.謝謝

    2009年9月18日 下午 03:35
  • Hi,

    不是說要加一嗎
    程式中未看到你有加一啊

    Public Class Form1

       Private Print_count As Integer = 0
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            With Form2
                .Show()
                .Value1 = TextBox1.Text
                .Value2 = TextBox2.Text
                .Value3 = Print_count+1
            End With
        End Sub

      
    End Class

    Public Class Form2

    #Region "Property"
        Property Value1() As String
            Get
                Return Label1.Text
            End Get
            Set(ByVal value As String)
                Label1.Text = value
            End Set
        End Property

        Property Value2() As String
            Get
                Return Label2.Text
            End Get
            Set(ByVal value As String)
                Label2.Text = value
            End Set
        End Property

        Property Value3() As String
            Get
                Return Label3.Text
            End Get
            Set(ByVal value As String)
                Label3.Text = value
            End Set
        End Property

     #End Region

    End Class


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2009年9月18日 下午 03:42
  • Hi 蹂躪大大
    上面敘述的程式碼~我有執行過
    可是會出現FORM2屬性衝突耶

    警告 1 'C:\Documents and Settings\keviny\Local Settings\Application Data\Temporary Projects\WindowsApplication1\Form2.Designer.vb' 中所宣告的 class 'Form2' 和部分 class 'Form2' 在 namespace 'WindowsApplication1' 中產生衝突,但是因為其中一個宣告為部分,所以正在進行合併。 C:\Documents and Settings\keviny\Local Settings\Application Data\Temporary Projects\WindowsApplication1\Form1.vb 18 14 WindowsApplication1

    請問為什麼會這樣呢?
    2009年9月18日 下午 04:09
  • Hi,

    沒有實際的東西很難找
    我猜是你把Code貼錯地方
    也許貼到同一個檔案去了
    檢查一下Code的位置,命名空間等
    若真的不懂 我想對我來說也很難解釋的更清楚

    可能只能先請您把書看熟了
    先別做超出書本範圍的東西
    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2009年9月18日 下午 04:19
  • 基本上應該是在 FORM2.Load 中 Label1.text= Form1.Value_Print_Count 應該就行了
    在VB.NET中有另一種變通的方法 (不過我不太喜歡這樣做)
    你在方案中開一個模組.  把所有要存取的全域變數放在模組中
    這樣Form1和Form2和....就可以存取同一個變數
    學而不思則罔, 思而不學則殆. 寫程式無他, 唯勤而已.
    2009年9月19日 上午 04:26
    版主
  • Hi
    蹂躪大大~
    謝謝您的回覆~我也有同感~我應該再買幾本書來看~畢竟一本書敘述的有限
    因為我人在國外所以目前在等朋友從台灣買書寄給我~這裡也有賣英文版的~只是我怕我弄不懂
    其中的意思~所以還是買中文版的比較好了解~

    謝謝bill大大~
    請問一下Value_Print_Count 這個指令怎麼用在程式碼裡頭
    因為我現在這本書裡面沒有提到Value_Print_Count
    這是跟列印有關嗎?那該怎麼用呢?
    2009年9月21日 上午 08:45
  • Value_Print_Count <--這個不是指令啊, 是一個自訂的屬性名稱, 就像自訂變數名稱, 可以依照自己高興改

    學而不思則罔, 思而不學則殆. 寫程式無他, 唯勤而已.
    2009年9月21日 上午 09:24
    版主
  • How to: Print a Form by Using the PrintForm Component (Visual Basic)

    要列印Form,參考以上囉...


    2009年9月21日 上午 09:36
  • 原來是這樣阿~哈哈
    我還以為是指令呢
    我現在寫的指令(以下)但是還是無法加1不知道問題出在哪
    Public Class Form1

        Private Print_count As Integer = 0
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            With Form2
                .Show()
                .Value1 = TextBox1.Text
                .Value2 = TextBox2.Text
                .Value3 = Print_count + 1
            End With
        End Sub


    End Class

    Public Class Form2

    #Region "Property"
        Property Value1() As String
            Get
                Return Label1.Text
            End Get
            Set(ByVal value As String)
                Label1.Text = value
            End Set
        End Property

        Property Value2() As String
            Get
                Return Label2.Text
            End Get
            Set(ByVal value As String)
                Label2.Text = value
            End Set
        End Property

        Property Value3() As String
            Get
                Return Label3.Text
            End Get
            Set(ByVal value As String)
                Label3.Text = value
            End Set
        End Property

    #End Region

       

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Me.Visible = False
            Form1.Show()

        End Sub
     Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        End Sub
    End Class

    2009年9月21日 上午 09:52
  • Print_count += 1
    .Value3 = Print_count
    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2009年9月21日 上午 09:57
  • Hi
    蹂躪大大
    可以了~執行起來沒問題了

    但是我關閉程式後再執行~之前執行的次數就會歸零從一開始
    我要怎麼做才能儲存次數呢?
    2009年9月21日 上午 10:04
  • Hi,

    前幾篇才問到
    資料要儲存起來
    你可以參考這篇
    http://social.msdn.microsoft.com/Forums/zh-TW/232/thread/f6a86de2-8644-4184-9c00-678fca25cdeb

    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2009年9月21日 上午 10:06
  • Hi
    蹂躪大大
    我改了一下程式碼~執行起來他會累加次數~當成是關閉~
    再開啟程式時也會看見上一次程式結束時的儲存次數~但是我總覺得怪怪的
    煩請幫我看一下(以下)程式碼對不對
    Public Class Form1
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            With Form2
                .Show()
                .Value1 = TextBox1.Text
                .Value2 = TextBox2.Text
                My.Settings.Setting += 1
                .Value3 = My.Settings.Setting
                My.Settings.Setting = .Value3

            End With
        End Sub
    End Class


    Public Class Form2
    #Region "Property"
        Property Value1() As String
            Get
                Return Label1.Text
            End Get
            Set(ByVal value As String)
                Label1.Text = value
            End Set
        End Property

        Property Value2() As String
            Get
                Return Label2.Text
            End Get
            Set(ByVal value As String)
                Label2.Text = value
            End Set
        End Property

        Property Value3() As String
            Get
                Return Label3.Text
            End Get
            Set(ByVal value As String)
                Label3.Text = value
            End Set
        End Property

    #End Region

     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Me.Visible = False
            Form1.Show()

        End Sub
        Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        End Sub
    End Class

    2009年9月21日 下午 12:46
  • Hi
    Joe大大
    我看了這篇文章 http://msdn.microsoft.com/en-us/library/bb629268.aspx
    但是我還是沒弄懂PrintForm1.Print()這個指令要怎麼用耶
    我有加入一個PrintForm 也有把PrintAction 改成 PrintToPrinter
    可是我把PrintForm1.Print()這個指令放在哪都不對耶
    我實在是太笨了~可以麻煩妳舉個例子讓我參考嗎?
    謝謝您
    2009年9月21日 下午 12:52
  •     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    'Form1把值填到Form2,您上面貼的就省略了
            Form2.Show()
            System.Threading.Thread.Sleep(2000)
            Form2.Button1.PerformClick()

        End Sub

    Public Class Form2

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Me.PrintForm1.Print()

        End Sub
    End Class

    指令放在Form2的按鈕裡,試試囉...
    2009年9月22日 上午 01:38
  • Hi
    Joe大大
    謝謝您的回覆
    我現在可以在FORM2放按鈕列印了
    還有個問題想請問您~若是我要再FORM1
    按下Button等待FORM1輸入的資料完成後直接列印
    這樣做可以嗎~因為我在FORM2裡加上Button他會連同
    按鈕也會一起列印出來

    我現在是想直接在FORM1裡加上一個Button待FORM1資料輸入完成
    按下Button不需要顯示FORM2頁面~直接進入列印~列印FORM2的內容
    謝謝您
    2009年9月22日 上午 08:08
  • Print Multiline TextBox in VB.net (Simple-Working Sample code)

    內容是字串嗎?如果不要顯示Form2,Form2不是很多餘?那直接寫在Form1裡不是更簡單嗎?PrintForm不適用,要改用PrintDocument,參考以上...
    2009年9月22日 上午 09:15
  • Hi
    Joe大大
    呵呵~我是因為想要把FORM1輸入的文字~顯示在FORM2的圖片上
    因為還有圖片所以我用FORM2來做
    顯示在圖片上的~有些是數字有些是文字
    我看了上面的參考範例@@發現我看不懂耶
    為什麼列印跟Textbox 有關呢?
    2009年9月22日 下午 01:52
  • 您是要列印Form?PictureBox?字串?還是什麼?如果是字串,把TextBox改成字串變數不就好了嗎?應該不會有剛好現成您想要的全功能範例,要自己試著改成您想要的...
    2009年9月22日 下午 02:03
  • Hi
    Joe大大
    好的~我試試看~謝謝您

    2009年9月22日 下午 02:31