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

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

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

全過去ログを検索

<< 0 >>
■7600  変数の変化の取得方法
□投稿者/ しょうた -(2007/09/11(Tue) 09:19:23)

    分類:[C#] 

    はじめまして、しょうたと申します。
    C#はかなり初心者です。ですから、こんなことができるのかがよくわかりません。

    内容は、下記のような配列を用意しておいて、任意の要素に値の代入があったときに、
    それをトリガとして、変更のあった要素とその値を使って処理を開始したいのです。

    int[] array = new int[5000];

    タイマーイベントを使って、常に値を比較して変化をみなければいけないのでしょうか?
    配列の要素数は何千単位で値の変化はリアルタイムで取得したいので、比較をしていると
    プログラムが重くなりそうで心配です。

    調べようといろいろ検索しているのですが、どのように調べればよいかもわからなくて困っています。
    解決方法、アドバイス等なんでも構いませんので、お解りになるかたがいらしゃったらお教えいただけないでしょうか?

    宜しくお願い致します。


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

■51610  ORACLE UPDATE文の書き方
□投稿者/ 裕猫 -(2010/07/12(Mon) 09:31:36)

    分類:[データベース全般] 

    WindowsXP VisualStudio2008C# Oracle10g ODAで接続しています。
    読み込み削除作成はできるのですがUPDATEで 「ORA-01756 引用符付き文字列が正しく終了していません。」というエラーになってしまいます。
    DBNテーブル名、KYNキー内容 MLO文字と数値の境目 TLO全カラム数
    データは前半VARCHAR2後半 int型で作成しています。
    public static int DBU(string DBN, string KYN, int FG, int MLO, int TLO)
    {
    int X = 0;
    using (OracleConnection con = new OracleConnection())
    {
    con.ConnectionString = MKST.UID;
    try
    {
    con.Open();
    }
    catch (Exception EX)
    {
    MessageBox.Show("「" + EX.Message + "」でデータベースの接続に失敗しました。");
    return X;
    }
    OracleCommand cmd = con.CreateCommand();
    //cmd.CommandText = "UPDATE " + DBN + " SET " + MKST.NEWST(DBN, FG, MLO, TLO) + " WHERE " + KYN;ーーーー@
    cmd.CommandText = "UPDATE " + DBN + " SET 生産中止 = '*' WHERE " + KYN;ーーーーーーーーーーーーーーーーーA
    //cmd.CommandText = "UPDATE " + DBN + " SET " + MKST.NEWST(DBN, FG, MLO, TLO) + " WHERE " + MKST.OLDST(DBN, FG, MLO, TLO);ーーB
    try
    {
    X = cmd.ExecuteNonQuery();
    }
    catch (Exception EX)
    {
    MessageBox.Show("「" + EX.Message + "」でデータの更新に失敗しました。");
    return X;
    }
    }
    return X;
    }
    というコードです。
    MKST.NEWST(DBN, FG, STC, TTC) + " WHERE " + MKST.OLDST(DBN, FG, STC, TTC);は
    品番 = '0028',登録日 = '20001010',生産開始 = '20010101',最終生産 = '20080901',ライン = 'U',生産中止 = '*',冶具番号 = 0,寸法縦 = 0,寸法横 = 0,寸法高 = 0,価額 = 0,残数 = 0,生産累計 = 0,材料費 = 0,部品費 = 0,加工費 = 0,管理費 = 0
    という文字列
    MKST.OLDST(DBN, FG, STC, TTC);は
    品番 = '0028',登録日 = '20001010',生産開始 = '20010101',最終生産 = '20080901',ライン = 'U',生産中止 = '',冶具番号 = 0,寸法縦 = 0,寸法横 = 0,寸法高 = 0,価額 = 0,残数 = 0,生産累計 = 0,材料費 = 0,部品費 = 0,加工費 = 0,管理費 = 0
    という文字列を作成します。文字と数値の区切りは間違っていません。Aのように変更項目(生産中止)だけを入れてみても同じでした。どのように変更文をつくればよいのでしょう?よろしくお願いいたします。
親記事 /過去ログ86より / 関連記事表示
削除チェック/

■51632  Re[3]: Timerの処理の重さ
□投稿者/ 甕星 -(2010/07/13(Tue) 00:01:49)
    No51631 (たぐぅ* さん) に返信
    >>タイマーを使っていても、処理は1つなので、必ず指定時間で割り込みが発生するわけではありません。
    >>非同期読み込みを使えば、ある程度改善するかもしれません。
    >
    > すみません。良く理解ができなかったです。。

    UIスレッドを分離していない限り、Timer1もTimer2もTimer3も同じスレッド上で動作しています。Timerも含めて他のイベントの処理がおこなわれている場合は、Timerイベントはそれらの処理が終わるまで待たされます。したがってTimer3の処理が100ms以内で完了しない場合には、Timer1もTimer2も、Timer3の処理が終わるまで待たされる事になります。

    解決策としては、Timer3の一部の処理を別スレッドにするか、あるいはTimer3の処理が100ms以内に終わるようにするかです。恐らくはFromStreamメソッドで時間がかかっているのでしょうから、Threading.Timerで2000ms毎に画像データを読み込むとかが現実的かと。
記事No.51628 のレス /過去ログ87より / 関連記事表示
削除チェック/

■89469  Re[4]: DataGridViewのカスタム列セル外表示
□投稿者/ mimio -(2018/11/30(Fri) 13:37:38)
    アローボタンクリックイベントに次のように書きました。

    TimeSpanSelectForm sForm = new TimeSpanSelectForm();
    sForm.TopLevel = false;
    sForm.FormBorderStyle = FormBorderStyle.None;
    this.Controls.Add(sForm);
    sForm.Location = new Point(20, TimefLPanel.Height); //入力部のパネルの高さ分下に下げる
    sForm.Show();
    sForm.BringToFront();


    DataGridViewでは
    this.Controls.Add(sForm);
    だと、thisがIDataGridViewEditingControlとなり、
    DataGridViewのCell枠内に表示されるので、
    this.Parent.Parent.Controls.Add(sForm);
    としました。
    Location位置を直せば、
    this.Controls.Add(sForm);
    のthisは、IDataGridViewEditingControlなので、
    DataGridViewのCell内表示となりました。
記事No.89447 のレス / END /過去ログ154より / 関連記事表示
削除チェック/

■89470  Re[5]: DataGridViewのカスタム列セル外表示
□投稿者/ 魔界の仮面弁士 -(2018/11/30(Fri) 14:27:56)
    2018/11/30(Fri) 15:04:31 編集(投稿者)

    No89469 (mimio さん) に返信
    > sForm.TopLevel = false;

    ごめんなさい!
    先の No89448 の回答で、TopLevel の true/false を逆に書いていました…。

    自分のイメージしていた処理は
     sForm.TopLevel = true; // 初期値で既に true
     sForm.Deactivate += delegate { sForm.Close(); };
     sForm.Show(Form.ActiveForm);
    という物です。(子コントロールとするわけではない)

    Deactivate イベントは、sForm 以外の場所をクリックした場合に
    キャンセル扱いとしてパネルフォームを閉じるために挿入しています。

    ただしこの方法だと、ActiveForm がパネルフォーム側に移ってしまうのが難点です。

    また、上記は親フォームがモードレスであることを想定しています。

    ShowDialog で表示されたモーダル ウィンドウ上にある DataGridView からも
    一応呼び出せますが、その場合、そのモーダルウィンドウの
    呼び出し元(オーナーウィンドウ)をクリックした場合は、
    Deactivate イベントが発生しません。
    (モーダルフォーム自身をクリックした場合は、Deactivate が発生する)


    > DataGridViewのCell枠内に表示されるので、
    > this.Parent.Parent.Controls.Add(sForm);
    > としました。

    子コントロールとして配置する場合は、こういう風にも書けます。


    DataGridView 上に配置したい場合
     // IDataGridViewEditingControl.EditingControlDataGridView プロパティ
     this.EditingControlDataGridView.Controls.Add(sForm);

    親 Form 上に配置したい場合
     // Control.FindForm メソッド
     this.FindForm().Controls.Add(sForm);


    ただしこの方法をとる場合、Controls.Add メソッドに渡すのは
    TopLevel = false な Form ではなく、Panel 等の方が良さそうです。
記事No.89447 のレス /過去ログ154より / 関連記事表示
削除チェック/

■89496  Re[6]: DataGridViewのカスタム列セル外表示
□投稿者/ mimio -(2018/11/30(Fri) 18:04:05)
    No89470 (魔界の仮面弁士 さん) に返信
    > 2018/11/30(Fri) 15:04:31 編集(投稿者)
    >
    > ■No89469 (mimio さん) に返信
    >>sForm.TopLevel = false;
    >
    > ごめんなさい!
    > 先の No89448 の回答で、TopLevel の true/false を逆に書いていました…。
    >
    > 自分のイメージしていた処理は
    >  sForm.TopLevel = true; // 初期値で既に true
    >  sForm.Deactivate += delegate { sForm.Close(); };
    >  sForm.Show(Form.ActiveForm);
    > という物です。(子コントロールとするわけではない)
    >
    > Deactivate イベントは、sForm 以外の場所をクリックした場合に
    > キャンセル扱いとしてパネルフォームを閉じるために挿入しています。
    >
    > ただしこの方法だと、ActiveForm がパネルフォーム側に移ってしまうのが難点です。
    >
    > また、上記は親フォームがモードレスであることを想定しています。
    >
    > ShowDialog で表示されたモーダル ウィンドウ上にある DataGridView からも
    > 一応呼び出せますが、その場合、そのモーダルウィンドウの
    > 呼び出し元(オーナーウィンドウ)をクリックした場合は、
    > Deactivate イベントが発生しません。
    > (モーダルフォーム自身をクリックした場合は、Deactivate が発生する)
    >
    >
    >>DataGridViewのCell枠内に表示されるので、
    >>this.Parent.Parent.Controls.Add(sForm);
    >>としました。
    >
    > 子コントロールとして配置する場合は、こういう風にも書けます。
    >
    >
    > DataGridView 上に配置したい場合
    >  // IDataGridViewEditingControl.EditingControlDataGridView プロパティ
    >  this.EditingControlDataGridView.Controls.Add(sForm);
    >
    > 親 Form 上に配置したい場合
    >  // Control.FindForm メソッド
    >  this.FindForm().Controls.Add(sForm);
    >
    >
    > ただしこの方法をとる場合、Controls.Add メソッドに渡すのは
    > TopLevel = false な Form ではなく、Panel 等の方が良さそうです。

    いろいろな方法があるんですね。
    いくつか試してみて、最も良さそうなものを探してみます。
    しばらく、プログラミングから離れますので、
    結果はかなり後になります。
記事No.89447 のレス /過去ログ154より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -