はじめまして。
VB.NETのプリントドキュメントで印刷終了後に
「印刷が終了しました」と表示されるメッセージを
表示させないようにしたいのですが、どうやって
制御したらよいのかわかりません。
このようなシステムで勝手に表示されるメッセージは
どうやって制御するのでしょうか?
あと.NETではsetforcusは無くなったのでしょうか?
画面初期表示にテキストBOXにフォーカスを持っていく処理を
したいのですがとっかかりが見つかりません。
どうぞアドバイスをお願いいたします。
う〜ん・・・私も行っていますうが、メッセージは出ません。
実際のコードを掲載してもらわないと指摘のしようがありません。
それと、フォーカスの件、
Call ControlName.Focus()
で出来ますが・・・
以上。
>「印刷が終了しました」と表示されるメッセージ
ネットワーク・プリンターを管理するソフトウエアー
(たとえばゼロックスのCenterWear)なんかが常駐していませんか。
もしそうなら「通知設定」ではずせます。
こんばんは。
岡田 之仁様、ねろ様
お返事ありがとうございます。
EPSON LP-7700で印刷を
しているのですが、もしかしたら
ドライバーをインストールしたときに一緒に
入れたソフトがそのメッセージを
出しているのかもしれません。
あとで確認してみます。
フォーカスの件ですが
テキストBOX1にフォーカスを
持っていきたいので
TextBox1.Focus()
としてみたところだめでした。
戻り値がBooleanになっていますが
どのように利用するのでしょうか?
ヘルプを見たのですが
いまいち理解できていません。
どうぞ宜しくお願いいたします。
をを!
フォーカスを指定して正常に動作する場合と、できない場合が
存在しますネ!〜
ちょっと調べてみますが・・・
どなたか、このフォーカスの件、知っておられる方は、コメント
をお願いします。
以上。
調べてみました・・・
マイクロソフトの英語ページには・・・
http://support.microsoft.com/default.aspx?scid=kb;en-us;822493&Product=vbNET
なにやら、バグのような内容が掲載されていました。
これを元に、動作するものを作成してみました。
フォームのテキストボックスを5個並べて・・・
以下のコードを実行して確認しました。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SetFocus(Me, TextBox3)
End Sub
Private Sub SetFocus(ByVal frm As Form, ByVal obj As Control)
Dim cnt As Control
For Each cnt In frm.Controls
If cnt.Name = obj.Name Then
cnt.Select()
'cnt.Focus()
End If
Next
End Sub
これで、OKのようです。
お試し下さい。
※ VS.NET 2002、VS.NET 2003 の両方で確認しました。
以上。
岡田 之仁様こんにちは。
アドバイスありがとうございました。
早速
Private Sub SetFocus(ByVal frm As Form, ByVal obj As Control)
Dim cnt As Control
For Each cnt In frm.Controls
If cnt.Name = obj.Name Then
cnt.Select()
'cnt.Focus()
End If
Next
End Sub
を自分のフォームで試したのですが
cnt にはfrm.Controls が全部入ってくる
のでしょうか?
それとも何か設定をしたコントロールだけが
cnt に入ってくるのでしょうか?
私のフォームには20個ぐらいコントロールがあるのに
cntにセットされたのは4個しかありませんでした。
フォーカスをセットしたいテキストBOXが
cntに入ってこないのでセットできない状態です。
あと以前にプリントドキュメントで印刷終了後に
メッセージが表示される件ですが
メッセージBOXに表示されているのは
①タイトル:「印刷中」
②表示メッセージ:document中1ページ
③表示されているボタン:キャンセル
です。
プリントドキュメント終了後(印刷終了後)
にはメッセージBOXは自然に消えるのですが
一度に20枚を印刷した場合
このメッセージBOXが20個出てしまい
非常に画面が見づらくなってしまいます。
私も調べていますが、まだわからないところがあります・・・
大変ご迷惑をおかけして申し訳ありませんが
もう少しお付き合いください。
当方の環境はVB.NET2003、Win2000です。
まずフォーム上の各コントロールの親子関係が解らない
ので、なんとも・・・
ですが、基本的には、全て渡されます。
Private Sub SetFocus(ByVal frm As Form, ByVal obj As Control)
のByVal cnt as Form の部分・・・
ためしに、ご自身の作成されたフォーム名に変更してみては?
Private Sub SetFocus(ByVal frm As xxxx, ByVal obj As Control)
xxx の部分を、今回渡したいフォーム名に変更する・・・
● メッセージの表示ですが・・・
PrintDocument1.DocumentName = "yyyy"
と、していましたら、メッセージが表示されます。
これをコメントアウトすれば、表示されなくなります。
それと・・・
e.HasMorePages = False
とされていましたら、1ページづつ印刷されます。
複数ページでしたら、
e.HasMorePages = True
として、複数ページを印刷すれば、メッセージを表示させても
1度しか表示しません。
ご検討下さい。
以上。
こんにちはねこねこです。
お返事ありがとうございました。
メッセージ表示の件、Trueにすることにより解消されました。
フォーカスの件ですが
Selectを用いることにより
可能になりました。
いろいろ親切に対応していただき
大変感謝いたします。
ツイート | ![]() |