C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >>
■2425  Re[6]: ユーザーコントロールのLostFocus
□投稿者/ しおん -(2006/01/28(Sat) 09:54:55)

    分類:[VB.NET] 

    >>わかりずらくてすみません(><)
    本当にわかりづらいですね。
    問題は、
    >>次へフォーカスが移りません
    >>Leaveイベントが発生しない
    どちらですか?
    「フォーカスが移らない」という問題と「Leaveイベントが発生しない」という問題は別問題だと思うのですが。
    ところで「Leaveイベントが発生しない」というのは、どうやって確認しましたか?debug文や、ブレークポイントで確認しましたか?
    タブキー以外でフォーカスを移してもだめですか?

    >>Leaveイベントで処理を行うと、タイミングがおかしくなってしまいました

    「タイミングがおかしくなった」ってどういう事ですか?自分の思ったとおりの処理がされていないという事ですか? このような漠然とした表現が一番困ります。
    ちなみにLeaveイベントで処理を行わないと正しく処理されるのですか?

    >>ユーザーコントロール内のテキストのLeave時にユーザーコントロール外のテキストへの値の表示というのはできるのでしょうか?

    問題ないと思います。

    うまく動かなくて焦るのはわかるのですが、もう少し要点を整理して質問をするようにしましょう。
記事No.2406 のレス /0過去ログ2より / 関連記事表示
削除チェック/

■2411  Re[5]: ユーザーコントロールのLostFocus
□投稿者/ yuko -(2006/01/27(Fri) 15:14:15)

    分類:[VB.NET] 

    No2410に返信(名無しぃシャープさんの記事)
    > そらできますが、結局どのコントロールでLeave判定したいのかがわかりません。
    > ユーザーコントロール外の世界なので、ユーザーコントロールそのものだと思うんだけど・・Leaveイベントが発生しないってことかな?

    ユーザーコントロール自体のLeaveイベントです。
    Leaveイベントはしばらくタブキーを打っていると発生するのですが、タブインデックスの影響か、タブでフォーカスを動かしても、次へフォーカスが移りません。。。

    テキストボックス(ユーザーコントロール内)→→→タブ→→→ラベル(ユーザーコントロール内)→→→タブ→→→イメージ(ユーザーコントロール内)→→→タブ→→→???ユーザーコントロールからはロストフォーカスしているのに、次のオブジェクトにフォーカスがあたっていない。LostFocus、又はLeaveイベントが発生しない。です。

    わかりずらくてすみません(><)
記事No.2406 のレス /0過去ログ2より / 関連記事表示
削除チェック/

■2410  Re[4]: ユーザーコントロールのLostFocus
□投稿者/ 名無しぃシャープ -(2006/01/27(Fri) 14:07:07)

    分類:[VB.NET] 

    No2409に返信(yukoさんの記事)
    > ユーザーコントロールのLeaveイベントで処理を行うと、タイミングがおかしくなってしまいました。。。
    > ユーザーコントロール内のテキストのLeave時にユーザーコントロール外のテキストへの値の表示というのはできるのでしょうか?

    そらできますが、結局どのコントロールでLeave判定したいのかがわかりません。
    ユーザーコントロール外の世界なので、ユーザーコントロールそのものだと思うんだけど・・Leaveイベントが発生しないってことかな?
記事No.2406 のレス /0過去ログ2より / 関連記事表示
削除チェック/

■2409  Re[3]: ユーザーコントロールのLostFocus
□投稿者/ yuko -(2006/01/27(Fri) 13:49:04)

    分類:[VB.NET] 

    すみません(><)
    ユーザーコントロールのLeaveイベントで処理を行うと、タイミングがおかしくなってしまいました。。。
    ユーザーコントロール内のテキストのLeave時にユーザーコントロール外のテキストへの値の表示というのはできるのでしょうか?
記事No.2406 のレス /0過去ログ2より / 関連記事表示
削除チェック/

■2408  Re[2]: ユーザーコントロールのLostFocus
□投稿者/ yuko -(2006/01/27(Fri) 13:42:03)

    分類:[VB.NET] 

    No2407に返信(名無しぃシャープさんの記事)
    > LostFocus?
    > Leaveじゃなくて?

    Leaveで対処できるようです。ありがとうございました。


    > で、Leave系のイベントはどこからどこへが発生しないんですか?
    > ユーザーコントロール内のコントロールから、ユーザーコントロール外ですか?
    > それとも、ユーザーコントロール内ですか?


    ユーザーコントロール内のコントロールから、ユーザーコントロール外へのイベントです。


    > また、発生しないと言っているのはユーザーコントロール自体のイベントですか?
    > それとも中にふくまれるコントロールのことですか?


    ユーザーコントロール自体のイベントです。


    VBプログラマーな為、LostFocusで良い物だと思っていました・・・。
    イマイチLeaveとの違いがわかっていないのですが・・・。
記事No.2406 のレス /0過去ログ2より / 関連記事表示
削除チェック/

■2407  Re[1]: ユーザーコントロールのLostFocus
□投稿者/ 名無しぃシャープ -(2006/01/27(Fri) 13:16:36)

    分類:[VB.NET] 

    No2406に返信(yukoさんの記事)
    > テキストと、ラベルと、イメージをもつユーザーコントロールを作成し、LostFocusで処理をいれたいのですが、イベントが発生しません。
    >
    > 具体的にはユーザーコントロールのテキストにコードを入力後、LostFocusでそれに付随するデータを、他のテキストに表示させたいのですが、どのようにしたらよいでしょうか?

    LostFocus?
    Leaveじゃなくて?
    http://blogs.wankuma.com/jeanne/archive/2006/01/25/20841.aspx

    で、Leave系のイベントはどこからどこへが発生しないんですか?
    ユーザーコントロール内のコントロールから、ユーザーコントロール外ですか?
    それとも、ユーザーコントロール内ですか?

    また、発生しないと言っているのはユーザーコントロール自体のイベントですか?
    それとも中にふくまれるコントロールのことですか?
記事No.2406 のレス /0過去ログ2より / 関連記事表示
削除チェック/

■2406  ユーザーコントロールのLostFocus
□投稿者/ yuko -(2006/01/27(Fri) 12:21:11)

    分類:[VB.NET] 


    分類:[VB.NET] 

    テキストと、ラベルと、イメージをもつユーザーコントロールを作成し、LostFocusで処理をいれたいのですが、イベントが発生しません。

    具体的にはユーザーコントロールのテキストにコードを入力後、LostFocusでそれに付随するデータを、他のテキストに表示させたいのですが、どのようにしたらよいでしょうか?
親記事 /0過去ログ2より / 関連記事表示
削除チェック/

■2401  Re[3]: TreeViewを用いた画面作成
□投稿者/ mao -(2006/01/26(Thu) 17:58:21)

    分類:[C#] 

    フレームはダメですか?
    作り方すら分からないので
    今調べています・・


記事No.2398 のレス /0過去ログ2より / 関連記事表示
削除チェック/

■2400  Re[2]: TreeViewを用いた画面作成
□投稿者/ 名無しぃシャープ -(2006/01/26(Thu) 17:43:51)

    分類:[C#] 

    あ、フレームを使いたいって話かな?
    フレームはあんまりお勧めできませんよー。
記事No.2398 のレス /0過去ログ2より / 関連記事表示
削除チェック/

■2399  Re[1]: TreeViewを用いた画面作成
□投稿者/ 名無しぃシャープ -(2006/01/26(Thu) 17:42:36)

    分類:[C#] 

    っていうか、あなたが利用しているサイトこそがそれのような・・
    http://jeanne.wankuma.com/

    ASP.NETの話?
記事No.2398 のレス /0過去ログ2より / 関連記事表示
削除チェック/

■2398  TreeViewを用いた画面作成
□投稿者/ mao -(2006/01/26(Thu) 17:30:37)

    分類:[C#] 


    分類:[C#] 

    いつもお世話になっております。
    左側にTreeViewを用いて複数の階層ディレクトリを作成し、
    それらをクリックしたさいに右側の画面が
    変化する、という仕様なのですが、参考になりそうな
    サイト等ご存知でしょうか。
    下記のサイトの左側が階層ディレクトリ・・ってのが理想です。
    ttp://homepage3.nifty.com/midori_no_bike/CS/index.html
    //みどりのバイクの管理人様すいません。参考にさせてください
    左側の階層ディレクトリをクリックした後の画面変更が
    周りに資料がなくて・・
    アドバイスお願いします。



親記事 /0過去ログ2より / 関連記事表示
削除チェック/

■2397  Re[5]: DEVMODEの値を変更したい
□投稿者/ あや -(2006/01/26(Thu) 11:50:58)

    分類:[C#] 

    肝心なところを見逃してしまい大変申し訳ありませんでした m(__)m
    (決して意図的ではありませんのでご勘弁を・・・)

    再度内容を確認し、以下のようにすることで読み書きができました。
    勉強不足のためまだ不安なところがありますが、ひとまず動くようになりましたのでホッとしています。

    以下、現在のソースと不安なところです。

      # APIの宣言と、ロックを解放〜に自信がありません。
      # GlobalUnlock()、SetHdevmode()、GlobalFree()の引数はhMemでいいのでしょうか?
      # 私が試した限りでは、devmodePtrでも正しく動作しています。

      [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
      public struct DEVMODE {
          ・・・
      };

      [DllImport("kernel32.dll")]
      private static extern IntPtr GlobalLock(IntPtr hMem);
      [DllImport("kernel32.dll")]
      private static extern bool GlobalUnlock(IntPtr hMem);
      [DllImport("kernel32.dll")]
      private static extern IntPtr GlobalFree(IntPtr hMem);

      private void btnTest_Click(object sender, System.EventArgs e) {
       IntPtr hMem = this.printDocument.PrinterSettings.GetHdevmode(); // ハンドル取得
       IntPtr devmodePtr = GlobalLock(hMem); // ロック・ハンドルからポインタを取得
       DEVMODE dm =
           (DEVMODE)Marshal.PtrToStructure(devmodePtr, typeof(DEVMODE)); // ポインタから構造体にコピー

       dm.dmCopies = 10; // 印刷部数を10部に設定
       dm.dmCollate = 1; // 部単位で印刷
       Marshal.WriteByte(devmodePtr, dm.dmSize+720, 0); // ドライバ固定の720Byte目を0
       Marshal.StructureToPtr(dm, devmodePtr, true); // 構造体からポインタにコピー

       GlobalUnlock(hMem); // ロックを解放
       this.printDocument.PrinterSettings.SetHdevmode(hMem); // PriterSetteingsにコピー
       GlobalFree(hMem); // ハンドルを解放
      }

    よろしくお願いします。

記事No.2377 のレス /0過去ログ2より / 関連記事表示
削除チェック/

■2395  Re[4]: DEVMODEの値を変更したい
□投稿者/ Hongliang -(2006/01/25(Wed) 20:13:55)
>

    分類:[C#] 

    大事なところを読み飛ばさないでください〜。

    ・Win32APIのGlobalLock関数で、ハンドルからアドレスポインタを取得する。

    GetHdevmodeで取得できるのは「ハンドル」です。ポインタじゃありません。
    //ポインタのポインタ、みたいなものです。
    だからこの値(が表すアドレス)に直接構造体を割り当てても意味ありません。
    ハンドルからポインタを取得するのにGlobalLockが必要なのです。
    もちろん使い終わったらGlobalUnlockも忘れずに。

    それから、恐らくこの構造体では文字セットの問題が発生すると思います。
    GetHdevmodeが内部で呼び出しているのは(私が試した限り)NT系ではW系の関数です。つまりデバイス名とフォーム名がUnicodeで返されています。
    StructLayout属性はデフォルトではCharSetがAnsiに設定されていますから、文字列へのマーシャリングで失敗するでしょう。
    プラットフォームにあう文字セットを使用するように、StructLayout属性のCharSetフィールドをAutoに設定してください。
記事No.2377 のレス /0過去ログ2より / 関連記事表示
削除チェック/

■2392  Re[4]: DEVMODEの値を変更したい
□投稿者/ あや -(2006/01/25(Wed) 17:45:20)

    分類:[C#] 

    Hongliangさんのアドバイスを元にとりあえずDEVMODEを取得するところからチャレンジしてみたのですが、取得するたびにDEVMODEの内容が少しずつ違うのですが・・・
    以下ソースと結果ですが、何か間違っているところはあるでしょうか?(DEVMODEの定義はPINVOKE.NETを参考にさせていただきました)

      [StructLayout(LayoutKind.Sequential)]
      public struct DEVMODE {
       [MarshalAs(UnmanagedType.ByValTStr,SizeConst=32)]
       public string dmDeviceName;
       public short dmSpecVersion;
       public short dmDriverVersion;
       public short dmSize;
       public short dmDriverExtra;
       public int dmFields;
       public short dmOrientation;
       public short dmPaperSize;
       public short dmPaperLength;
       public short dmPaperWidth;
       public short dmScale;
       public short dmCopies;
       public short dmDefaultSource;
       public short dmPrintQuality;
       public short dmColor;
       public short dmDuplex;
       public short dmYResolution;
       public short dmTTOption;
       public short dmCollate;
       [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
       public string dmFormName;
       public short dmLogPixels;
       public short dmBitsPerPel;
       public int dmPelsWidth;
       public int dmPelsHeight;
       public int dmDisplayFlags;
       public int dmDisplayFrequency;
       public int dmICMMethod;
       public int dmICMIntent;
       public int dmMediaType;
       public int dmDitherType;
       public int dmReserved1;
       public int dmReserved2;
       public int dmPanningWidth;
       public int dmPanningHeight;
      };

      [DllImport("kernel32.dll")]
      private static extern IntPtr GlobalFree(IntPtr hMem);

      private void btnTest_Click(object sender, System.EventArgs e) {
       IntPtr devmodePtr = this.printDocument.PrinterSettings.GetHdevmode();
       DEVMODE dm = (DEVMODE)Marshal.PtrToStructure(devmodePtr, typeof(DEVMODE));
       GlobalFree(devmodePtr);

       Debug.WriteLine("dm.dmDeviceName[" + dm.dmDeviceName + "]");
       Debug.WriteLine("dm.dmSpecVersion[" + dm.dmSpecVersion + "]");
       Debug.WriteLine("dm.dmDriverVersion[" + dm.dmDriverVersion + "]");
       Debug.WriteLine("dm.dmSize[" + dm.dmSize + "]");
       Debug.WriteLine("dm.dmDriverExtra[" + dm.dmDriverExtra + "]");
    }

    結果1回目
     dm.dmDeviceName[ !]
     dm.dmSpecVersion[0]
     dm.dmDriverVersion[0]
     dm.dmSize[144]
     dm.dmDriverExtra[981]

    結果2回目
     dm.dmDeviceName[ p・p]
     dm.dmSpecVersion[0]
     dm.dmDriverVersion[0]
     dm.dmSize[136]
     dm.dmDriverExtra[981]

    長くなってしまいましたが、よろしくお願いします。
記事No.2377 のレス /0過去ログ2より / 関連記事表示
削除チェック/

■2389  Re[3]: DEVMODEの値を変更したい
□投稿者/ あや -(2006/01/25(Wed) 13:13:58)

    分類:[C#] 

    レスが前後してしまったようで・・・

    Hongliangさんのアドバイスを元にもうちょっと調べてみようと思います。
    また何かありましたらよろしくお願いします。

記事No.2377 のレス /0過去ログ2より / 関連記事表示
削除チェック/

■2386  Re[3]: DEVMODEの値を変更したい
□投稿者/ 中博俊 -(2006/01/25(Wed) 12:54:47)
>

    分類:[C#] 

    とりあえず私が断念した内容と同じ(w

    すなおにmc++ or C++/CLIでラップするのが近道だと思います。
記事No.2377 のレス /0過去ログ2より / 関連記事表示
削除チェック/

■2383  Re[2]: DEVMODEの値を変更したい
□投稿者/ あや -(2006/01/25(Wed) 12:27:48)

    分類:[C#] 

    説明不足ですいません。

    DEVMODE構造体はわかっているつもりです。
    お聞きしたいのは、GetHdevmodeから返ってくるのがIntPtrなので、これをどうやって
    DEVMODE構造体にするのかと、ドライバ固定の値をどうやって設定するのかということです。

    お手数かけますが、よろしくお願いします。
記事No.2377 のレス /0過去ログ2より / 関連記事表示
削除チェック/

■2382  Re[2]: DEVMODEの値を変更したい
□投稿者/ Hongliang -(2006/01/25(Wed) 12:12:13)

    分類:[C#] 

    手順的には、

    ・C#側でDEVMODE構造体を定義しておく。
    ・GetHdevmodeメソッドでハンドルを取得する。
    ・Win32APIのGlobalLock関数で、ハンドルからアドレスポインタを取得する。
    ・System.Runtime.InteropServices.Marshal.PtrToStructureメソッドでポインタから構造体にコピーする。
    ・構造体を変更する。
    ・同じアドレスにMarshal.StructureToPtrメソッドでコピーする。
    ・Win32APIのGlobalUnlock関数でロックを解放。
    ・SetHdevmodeメソッドで書き込む。
    ・Win32APIのGlobalFree関数でメモリを解放する。

    ってことになりますかね。
    DEVMODE構造体のC#における表現はPINVOKE.NET辺り見ると載ってるかもしれません。
    プリンタ固有ってことはこの構造体の後ろにくっついてるんだろうけど、それらについてはMarshal.Read.../Write...メソッドを使うとかしないといけないかもしれません。
記事No.2377 のレス /0過去ログ2より / 関連記事表示
削除チェック/

■2380  Re[1]: DEVMODEの値を変更したい
□投稿者/ T★M -(2006/01/25(Wed) 11:36:22)
記事No.2377 のレス /0過去ログ2より / 関連記事表示
削除チェック/

■2377  DEVMODEの値を変更したい
□投稿者/ あや -(2006/01/25(Wed) 10:29:04)

    分類:[C#] 


    分類:[C#] 

    はじめまして。

    C#にて印刷プログラムの開発をしていますが、プリンタ固有の情報を変更するため、DEVMODEの値を変更する必要があります。
    PrinterSettingsクラスにGetHdevmode、SetHdevmodeというメソッドがあるので、これが使用できるかと思うのですが、使用方法が全くわかりません。

     public void Print() {
       // DEVMODEを取得する
       IntPtr devmode = this.printDocument.PrinterSettings.GetHdevmode();

       // プリンタ固有の値を変更する
       // DEVMODEの値を変更したいのですが使用方法がわかりません

       // 変更したDEVMODEを設定する
       this.printDocument.PrinterSettings.SetHdevmode(devmode);
     }

    MSDNにもサンプルが載っておらず困っています。何かよい方法がありましたらアドバイスお願いします。

親記事 /0過去ログ2より / 関連記事表示
削除チェック/

<前の20件 | 次の20件>

<< 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >>

ヒット件数が多いので過去ログ1〜2 までの検索結果 / 過去ログ3からさらに検索→

パスワード/

- Child Tree -