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

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

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

全過去ログを検索

<< 0 >>
■23675  Re[3]: オブジェクト指向
□投稿者/ επιστημη -(2008/08/20(Wed) 11:22:09)
>
    >>「データに関数を食わす」
    > これはすごく誤解を生むというか、

    誤解を生むのは百も承知で敢えて。
記事No.23667 のレス /過去ログ44より / 関連記事表示
削除チェック/

■23674  Re[2]: オブジェクト指向
□投稿者/ 初心者 -(2008/08/20(Wed) 11:22:02)
    No23669 (やじゅ さん) に返信
    > ■No23667 (初心者 さん) に返信
    >>オブジェクト指向とはなんですか?
    >>サイト本をみてもまったくわかりません
    >>
    >
    >
    > 2月23日に行われた、わんくま同盟東京勉強会#17で使用した資料です。
    > よかったら、どうぞ。
    > 変なとこもあるけど、おおまかな概念がわかるかとw
    >
    > 「ドラえもんの世界をオブジェクト指向で」
    > http://blog.yaju.jp/200804/article_12.html

    ありがとうございました。



    プラモデルと粘土のちがいですかね?
    わかりにくいかとおもいますがw




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

■23677  Re[3]: オブジェクト指向
□投稿者/ επιστημη -(2008/08/20(Wed) 11:23:13)
>
    > プラモデルと粘土のちがいですかね?

    ごめんなさい、なんのアナロジなのかさっぱわからんです。
記事No.23667 のレス /過去ログ44より / 関連記事表示
削除チェック/

■23676  Re[6]: VB2005 フォームタイトルの色を変更したい
□投稿者/ ほげほげ -(2008/08/20(Wed) 11:22:49)
    無事VB.NETバージョンに、変換が完了しました!
    情報提供ありがとうございました。

    ただ問題点が2つほど、発生しています。

    問題1:作成したEXEをタスクバーから起動させると、色が反映されない。
        →(当方で、イベントの種類がわからず、対応できていないかもしれません。)

    問題2:変更色で表示している画面のフォーム内に、マウスカーソルを動かしていると
        タイトルバーの描画が、ちらつく。

    上記2点とも、イベントドリブンの種類が分かれば、解決できる問題かと思いますが
    もし、イベントの種類もしくは対応の方針などアドバイスがありましたら
    教えてください。
記事No.23031 のレス /過去ログ44より / 関連記事表示
削除チェック/

■79260  Re[3]: InstallShieldでダイアログが隠れる
□投稿者/ とっちゃん -(2016/03/18(Fri) 18:06:29)
    No79246 (Nemo さん) に返信
    > 今回はrtf形式に変換した方が早いかなぁ・・っていう気がしてきてました。
    >
    > 使用許諾の文章ファイルを用意するのは別の部隊なので、開発側で加工したくないという思いがあったので
    > 仕組み悩んでました。
    > 特約店ごとに使用許諾を変更できるように将来的にインストーラの中に組み込むのではなく、
    > exe外にあるtxtを参照表示するようにして差し替え可能にしてほしいとか言われていて・・

    こっち反応し損ねてた。。。
    rtf で表示するところは、ScrollableText というコントロールが使われるのですが
    こいつが、埋め込みのrtfしか表示してくれないんですよね。

    なので、動的に切り替えるという仕組みが取れません。

    やろうと思ったら、必要数分だけあらかじめrtfとして埋め込んでおいて
    実行時に選ぶとかその程度。。。

    > InstallScriptで何とかするしかないのかなぁと考えてました。

    なので、使用許諾を外部テキストにしてそれを実行時に表示させる
    という仕組みがMust(必須案件)なら、基本のmsiでは実現が困難なので

    1.ボタンで外部ファイルを ShellExecute する(こちらは、基本のmsi+CAで実現可能)
    2.独自UI(InstallScriptを含む)で、インストーラUIを構築してその中で表示する
    3.単純添付するだけで、UIとして表示しない(使用許諾を盾にして法的措置に出れない場合があるのでお勧めできない)

    という格好になると思います。

    InstallShield を持っているのであれば、2の実現はInstallScript(以下IS) が一番ローコストだと思います。
    ISだとダメだーという場合は、ISから、UIDLLを起動してそっちに全部任せるという力技もあります。

    今は、ロゴとかもないので、msi じゃないとーという状況は減りつつあるんじゃないかな?
    と思います。
記事No.79225 のレス /過去ログ134より / 関連記事表示
削除チェック/

■86806  Re[5]: メッセージボックスが出ない
□投稿者/ にゃるら -(2018/03/19(Mon) 11:49:51)
    2018/03/19(Mon) 12:00:02 編集(投稿者)
    2018/03/19(Mon) 11:59:57 編集(投稿者)

    <pre><pre>■No86798 (魔界の仮面弁士 さん) に返信

    MessageBoxがFormとは異なる実装とは思っていましたが、
    似たようなことをしていると思い、MessageBoxクラスまでは
    追いかけていませんでした。。。

    public static DialogResult Show(string text)
    {
    return ShowCore(null, text, String.Empty, MessageBoxButtons.OK, MessageBoxIcon.None, MessageBoxDefaultButton.Button1, 0, false);
    }

    であれば、オーナーを指定していないときはnull扱いなので、
    GetActiveWindowsを呼び出す形でMessageBoxAPIに置き換えたソースコードを書いてみました(文末)。


    実行結果ですが、環境は以下になります。
    Windows7 SP1 (日本語) 64bit
    Visual Studio 2017

    まずは質問者様と同じForms.MessageBoxを使った場合は、
    1回目は、
    Result = No
    LastError(1150): ???
    で2回目以降は
    Result = No
    LastError(1400): ERROR_INVALID_WINDOW_HANDLE
    でした。

    一方で、MessageBoxAPIに置き換えた方は、
    1回目は、
    AciveWindow(788866):System.Windows.Forms.Application+ParkingWindow
    Result = None
    LastError(1400): ERROR_INVALID_WINDOW_HANDLE
    で2回目からもParkingwindowのハンドルは違うものが出ます。
    ただ、何回かしていると(時には2回目から)
    AciveWindow(919896):WindowsFormsApp9.Form1
    Result = OK
    LastError(0): ???
    となりました。

    私の呼び出し方に問題がもしなかったとすれば、GetActiveWindow/MessageBox以外の
    API呼び出し等も影響を与えていそうです。

    ただ、なんにしても「(呼び出し側にとって)不特定なハンドル」が親ウィンドウになってしまうことが
    原因ということになんら変わらないわけなので、

    ・メインとなるダイアログクラス以外は、
    - 親ハンドルを渡す(Azulean さんの No86789 のコード)
    - NativeWindowを渡す(魔界の仮面弁士 さんの No86791のNativeWindow指定) <-- これはGetWindowLongレベルの知識が必要なので微妙

    ・サービスであればMessageBoxOptions.ServiceNotificationを指定する(魔界の仮面弁士 さんの No86791のServiceNotification指定)

    としておくのが良いのかなと個人的には思いました。

    自分(もしくは周りの人)でMessageBoxのオーナーを指定しない実装がなかったので、結構面白い内容でした!


    using System;
    using System.Diagnostics.CodeAnalysis;
    using System.Runtime.InteropServices;
    using System.Runtime.Versioning;
    using System.Windows.Forms;

    namespace WindowsFormsApp9
    {
    public class Form1 : Form
    {
    [STAThread]
    static void Main()
    {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.Run(new Form1());
    }

    public Form1()
    {
    Controls.Add(new UserControl1());

    Menu = new MainMenu(new MenuItem[] { new MenuItem("&File...", (sender, e) =>
    {
    var control = Controls[0];
    Controls.Remove(control);
    control.Dispose();

    Controls.Add(new UserControl1());
    })});
    }

    class UserControl1 : UserControl
    {
    static bool first = true;

    public UserControl1()
    {
    if (first)
    {
    first = false;
    }
    else
    {

    #if true
    var ret1 = System.Windows.Forms.MessageBox.Show("1");
    #else
    var activeWindow = GetActiveWindow();
    var c = Control.FromHandle(activeWindow);
    System.Diagnostics.Debug.WriteLine($"AciveWindow({activeWindow}):{(c != null? c.GetType().FullName: "null")}");

    var ret1 = (DialogResult)MessageBox(new HandleRef(null, activeWindow), "出ないはずメッセージ", "確認", MB_OK | MB_ICONEXCLAMATION | MB_APPLMODAL);
    #endif
    System.Diagnostics.Debug.WriteLine($"Result = {ret1}");
    GetLastErrorCheck();

    var ret2 = System.Windows.Forms.MessageBox.Show("2 ret1=" + ret1.ToString());
    }

    Controls.Add(new Button());
    }
    }

    [DllImport("kernel32.dll")]
    static extern int GetLastError();

    [DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto),
    SuppressMessage("Microsoft.Usage", "CA2205:UseManagedEquivalentsOfWin32Api")]
    [ResourceExposure(ResourceScope.None)]
    public static extern int MessageBox(HandleRef hWnd, string text, string caption, int type);

    [DllImport("user32.dll", ExactSpelling = true, CharSet = CharSet.Auto)]
    [ResourceExposure(ResourceScope.Process)]
    public static extern IntPtr GetActiveWindow();

    const int MB_OK = 0x00000000;
    const int MB_ICONEXCLAMATION = 0x00000030;
    const int MB_APPLMODAL = 0x00000000;

    const int ERROR_INVALID_HANDLE = 6;
    const int ERROR_INVALID_WINDOW_HANDLE = 1400;

    private static void GetLastErrorCheck()
    {
    var lastError = GetLastError();
    switch (lastError)
    {
    case ERROR_INVALID_HANDLE:
    System.Diagnostics.Debug.WriteLine($"LastError({lastError}): ERROR_INVALID_HANDLE");
    break;
    case ERROR_INVALID_WINDOW_HANDLE:
    System.Diagnostics.Debug.WriteLine($"LastError({lastError}): ERROR_INVALID_WINDOW_HANDLE");
    break;
    default:
    System.Diagnostics.Debug.WriteLine($"LastError({lastError}): ???");
    break;
    }
    }
    }
    }
    </pre></pre>
記事No.86788 のレス / END /過去ログ149より / 関連記事表示
削除チェック/

■91989  Re[5]: コンボボックスによる絞り込み
□投稿者/ WebSurfer -(2019/08/16(Fri) 10:15:34)
    No91988 (たかし さん) に返信

    最終的にどうしたいのですか? No91972 に書いてあった、

    > 実はDataGridViewで目的に近いものが作成できることが分かったところなのですが、
    > 当初の目論見通りふたつのComboBoxだけで実行する方法が何とも諦めきれません。

    というところから想像すると、最終的にやりたいことは部署を ComboBox から選択すると、
    その部署に属する社員のデータ一覧が DataGridView に表示されるということではないか
    と思ってますが?

    であれば、最初の質問の ComboBox 2つでの実装を追求するより、上記のことを考えた方
    がよさそうだと思うのですが。

    あと、No91973 で魔界の仮面弁士さんからも質問されていますが、事前に SQL Server から
    全ての情報を DataTable に読み取ってからそれを操作するのか、操作の都度 SQL Server
    からデータを DataTable に読み取ってから操作したいのか、それともその間を取って
    部署の方は前者で社員の方は後者としたいのですか?
記事No.91943 のレス /過去ログ160より / 関連記事表示
削除チェック/

■91990  Re[5]: コンボボックスによる絞り込み
□投稿者/ WebSurfer -(2019/08/16(Fri) 10:21:25)
記事No.91943 のレス /過去ログ160より / 関連記事表示
削除チェック/

■92007  Re[8]: コンボボックスによる絞り込み
□投稿者/ WebSurfer -(2019/08/17(Sat) 10:43:48)
    No92005 (たかし さん) に返信

    > やはりVB.NETで「コンボボックスによる絞り込み」は出来ないか、
    > 少なくとも「途方もなく難しい」ということが分かりました。

    そんなことはなくて、No91999 に書いたように、

    (2) 事前に SQL Server から全ての情報を DataTable に読み取ってからそれを操作する

    という条件でよければ、DataTable から DataView を取得して、その RowFilter プロパ
    ティに条件を設定すればできます。

    それはともかく、No91989 No91990 No91999 No92001 と私からレスしていますが、それら
    に対するフィードバックは無しですか?

    読んだ・読まなかった、理解できた・できなかった、役に立った・立たなかったぐらいは
    フィードバックとして返してもらっても良いと思うのですけど。
記事No.91943 のレス /過去ログ160より / 関連記事表示
削除チェック/

■92018  Re[9]: コンボボックスによる絞り込み
□投稿者/ たかし -(2019/08/18(Sun) 09:13:00)
    WebSurferさま、大変に失礼しました。

    >読んだ・読まなかった、理解できた・できなかった、役に立った・立たなかったぐらいは
    >フィードバックとして返してもらっても良いと思うのですけど。

    ご紹介いただいた記事はすべて読ませていただきました。
    ただ私自身VB.NET歴がまだ浅いもので、完全に理解することは出来ておりません。
    また、記事によっては私の開発環境であるVisualStudio2017の画面構成と違うものがあり、
    なかなか一筋縄では行かないというのが本音です。

    No91989
    >あと、No91973 で魔界の仮面弁士さんからも質問されていますが、事前に SQL Server から
    >全ての情報を DataTable に読み取ってからそれを操作するのか、操作の都度 SQL Server
    >からデータを DataTable に読み取ってから操作したいのか、それともその間を取って
    >部署の方は前者で社員の方は後者としたいのですか?

    これは具体的に言うとどのようなことを指しているのでしょうか?
    もう少し詳しくお教え願えないでしょうか?

    No91990
    >上の No91989 で質問した「最終的にどうしたいのですか?」ですが、以下の記事の図
    >のような感じのことがしたいのでしょうか?(記事は ASP.NET Web Forms アプリの話
    >ですが図だけ見てください)
    >
    >DropDownList を使って絞込み
    >http://surferonwww.info/BlogEngine/post/2011/07/17/Showing-records-selected-by-DropDownLists-into-GridView.aspx

    私のしたいことは、これとはちょっと違うと思います。
    それに対するお答えとして、92005にソースコードを書き込んだ積りでおりましたが、
    そう明確に申し上げなかったのが私のミスだったかも知れません、お詫び申し上げます。

    No91999
    >10 行でズバリ !! 非接続型のデータ アクセス (ADO.NET) (C#)
    >https://code.msdn.microsoft.com/windowsdesktop/10-ADONET-C-cbfe7688

    Northwindをダウンロードしてセウ族を試みましたが「接続の追加」のところでエラーになります。
    エラー内容・・・
    「SQL Server への接続を確立しているときにネットワーク関連またはインスタンス固有のエラーが発生しました。」

    >Windows フォーム アプリケーションでのデータへの接続
    >https://docs.microsoft.com/ja-jp/previous-versions/wxt2cwcc(v=vs.120)

    実は私には「ADO.NET」の概念がイマイチ分かりません。
    ADO.NETに関して、最新で分かり易い解説サイトなどありましたらお教えいただければ大変に有り難いのですが。

    >TableAdapterのSELECT文を参照したい
    >https://teratail.com/questions/163335
    >【VS C#】Textboxから取得したstringで検索クエリ
    >https://teratail.com/questions/157732

    これらについては、ただいま勉強中です。
    ぜひ参考にさせていただきたいと思っておりますが、ただ私にはまだC#のコードが分からないもので、
    できればVB.NETによる関連記事をご紹介お願いしたいと存じます。

    No92001
    >10 行でズバリ !! 非接続型のデータ アクセス (ADO.NET) (C#)
    >https://code.msdn.microsoft.com/windowsdesktop/10-ADONET-C-cbfe7688
    >の Customers テーブルを tbl_部署に、Orders テーブルを tbl_社員に読み替えて
    >チュートリアルと同様な形のアプリにするというのも検討の価値があると思います。

    以上、お答えになっているかどうか分かりませんがよろしくお願いいたします。

    >(2) 事前に SQL Server から全ての情報を DataTable に読み取ってからそれを操作する
    >
    >という条件でよければ、DataTable から DataView を取得して、その RowFilter プロパ
    >ティに条件を設定すればできます。

    具体的なソースコードを示していただきたいのですが・・・。
    オブジェクト名は、92005の私のコードのものを使ってください。
    ではよろしくお願い申し上げます。たかし


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

■92019  Re[10]: コンボボックスによる絞り込み
□投稿者/ WebSurfer -(2019/08/18(Sun) 10:22:39)
    No92018 (たかし さん) に返信

    とりあえず一番肝心だと自分が思う点をレスします。その他は別途。

    > No91989
    > >あと、No91973 で魔界の仮面弁士さんからも質問されていますが、事前に SQL Server から
    > >全ての情報を DataTable に読み取ってからそれを操作するのか、操作の都度 SQL Server
    > >からデータを DataTable に読み取ってから操作したいのか、それともその間を取って
    > >部署の方は前者で社員の方は後者としたいのですか?
    >
    > これは具体的に言うとどのようなことを指しているのでしょうか?
    > もう少し詳しくお教え願えないでしょうか?

    分からなかったら話を先に進める前に聞きましょう。でないと、話が噛み合わなくなります。

    DataSet / DataTable は SQL Server データベース(SQL Server に限りませんが)のテーブル
    を PC のメモリ上に取得してきて、いちいち DB にアクセスしなくてもプログラムで操作して
    テーブルの内容の一覧の表示、編集・更新ができるようにするためのです。

    詳しくは以下の記事の「非接続型データアクセスの動作とそのアドバンテージ」のセクション
    を見てください。とりあえず「図1」と「図2」だけでも見ればどのように使うことを目的と
    しているかが分かると思います。

    DB 設計者のための明解 ADO.NET 第 1 回
    https://docs.microsoft.com/ja-jp/previous-versions/cc482903(v=msdn.10)

    まず、上記のことを理解してください。

    で、上記質問に対する答えですが、質問者さんのレス No91972 に書いてあった、

    > 退職者や新入社員、また部署の異動なども頻繁に行なわれます。

    が、その頻度によってどのようにするかが変わってくるということです。

    (1) 事前に SQL Server から全ての情報を DataTable に読み取ってからそれを操作
    (2) 操作の都度 SQL Server からデータを DataTable に読み取ってから操作
    (3) その間を取って部署の方は前者で社員の方は後者

    例えば、四半期に 1 回程度の頻度であれば (1) で十分そうです。5 秒に 1 回とか
    ですと (2) でないとダメそうです。部署テーブルは四半期に 1 回程度だが社員テー
    ブルは社員テーブルは 10 分に 1 回とかですと (3) がよさそうということになります。
記事No.91943 のレス /過去ログ160より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -