台灣最大程式設計社群網站
線上人數
1555
 
會員總數:242949
討論主題:187843
歡迎您免費加入會員
討論區列表 >> VB.NET >> form2 呼叫 form1 並列印form1
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
form2 呼叫 form1 並列印form1
價值 : 100 QP  點閱數:239 回應數:11

樓主

MStone Lin
門外漢
0 60
1324 89
發送站內信

請問
我有2個winform

起始為form2
form2 有一button 呼叫 form1
呼叫form1時 就直接列印form1的畫面
但卻是列印form2

請問怎麼排除問題

form2 內容



Form1的內容


請問如何從form2呼叫form1時直接列印form1的畫面
而不是列印form2的畫面
謝謝


搜尋相關Tags的文章: [ winform ] , [ print ] ,
本篇文章發表於2018-05-02 11:26
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
作者回應

MStone Lin
檢舉此回應
form2 的button1 少貼2行
完整如下

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

Label4.Text = Label4.Text + 1

Dim obj As Form1 = New Form1
obj.Label3.Text = Label4.Text

obj.Visible = True

.......
Me.Visible = False
End Sub

救解,謝謝

本篇文章回覆於2018-05-02 11:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

Ader Chen
檢舉此回應

如果把原本在 Form1.Load 事件中的程式
改移到 Form1.Shown 事件中執行
會不會好一些?
本篇文章回覆於2018-05-02 12:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

Ader Chen
檢舉此回應

另, Form2 的 Button1_Click 之中應該會有 Form1.Show 吧? (若要抓 Form1 的圖列印)
Form1.Show 應該是在 Me.Visible = False 之後對吧?
本篇文章回覆於2018-05-02 12:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

MStone Lin
檢舉此回應
回Ader Chen

我在1樓有補上 完整的
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Label4.Text = Label4.Text + 1
Dim obj As Form1 = New Form1
obj.Label3.Text = Label4.Text
obj.Visible = True
.......
Me.Visible = False
End Sub

但若今天 要form2不消失 (取消Me.Visible = False)
顯示form1 然後直接印form1呢



本篇文章回覆於2018-05-02 13:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

Ader Chen
檢舉此回應

Form2 做不做 Me.Visible = False, 應該無所謂.

可是 1樓和4樓的 Button1_Click 裡面沒看到 Form1.Show,
您應該是要列印 Form1 的畫面嗎? 那就需要將 Form1.Show 出來, memoryGraphics.CopyFromScreen 才能抓到 Form1 的畫面, 否則就變成抓到 Form2 的畫面了. 此其1.

在 Load 事件階段尚未顯示 Form, 要到 Shown 事件才能抓到 Form 的畫面, 此其2.

以上供參考.
本篇文章回覆於2018-05-02 14:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

MStone Lin
檢舉此回應
回Ader Chen
照您說的 在button1_click 加上form1.show

然後在form1 加上 form1.show
將 form1.load 內容移至 form1.show
變成 先印 form2 後 才顯示 form1 的文字內容

怎麼改才正確

form2:

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

Label4.Text = Label4.Text + 1
Form1.Show()

Dim obj As Form1 = New Form1
obj.Label3.Text = Label4.Text
' obj.Visible = True

End Sub

form1:

Private Sub Form1_show(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.CenterToScreen() '置中
Me.ControlBox = False '不顯示XX
Label4.Text = DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss")

printDocument1.PrinterSettings.PrinterName = "PDFCreator" ' 設定應用程式輸出印表機

CaptureScreen()
printDocument1.Print()

Me.Hide()

End Sub


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


怎麼改才正確呢
謝謝



本篇文章回覆於2018-05-02 15:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

Ader Chen
檢舉此回應

參考看看:
Form2:


Form1:


本篇文章回覆於2018-05-02 16:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

MStone Lin
檢舉此回應
回 Ader Chen

還是不行
ttt,bmp 還是form2的畫面....

本篇文章回覆於2018-05-02 16:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

Ader Chen
檢舉此回應

怪了, 我測試 OK 後才貼上 7樓程式碼的說...
Button1_Click 中
Label4.Text = Val(Label4.Text) + 1

Dim obj As New Form1
obj.Label3.Text = Label4.Text
obj.Show() '<---
在 Show 之後應該沒有其他程式了吧(?)

本篇文章回覆於2018-05-02 16:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
最有價值解答

Ader Chen
檢舉此回應

請試試看 CaptureScreen():

本篇文章回覆於2018-05-02 16:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

MStone Lin
檢舉此回應
感謝 Ader Chen

終於成功了

感謝
本篇文章回覆於2018-05-02 17:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.