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

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

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

全過去ログを検索

<< 0 >>
■8737  Re[4]: LinkLabel.Links.Addメソッドについて
□投稿者/ 囚人 -(2007/10/09(Tue) 12:48:50)
記事No.8711 のレス /過去ログ20より / 関連記事表示
削除チェック/

■56751  Re[1]: VSTO2005SEについてです
□投稿者/ じゃんぬねっと -(2011/01/29(Sat) 06:42:08)
    No56749 (okada さん) に返信
    > 私は今、VSTO2005SEでWord2007のアドインを開発中です。
    > 今開いているドキュメントにオートシェイプを挿入しようとしているのですが
    > うまくいきません。イベントハンドラを作り、その中を
    > 
    >         private void button2_Click(object sender, MouseEventArgs e)
    >         {
    >             Word.ShapeRange shape1 = Globals.ThisAddIn.Application.Selection.ShapeRange;
    >             object oMissing = Globals.ThisAddIn.Application.Selection.Range;
    >             Word.Shape shape = Globals.ThisAddIn.Application.ActiveDocument.Shapes.AddShape(149,50f, 50f, 50f, 50f, ref oMissing);
    >         }
    > 
    > という風にShapes.AddShapeメソッドを利用しているのですが、6つ目の引数が悪いようで
    > 指定された値は境界を超えています。
    > と言われてしまいます。
    > 何かいい方法はないでしょうか?
    > また、オートシェイプを挿入するいい方法はないでしょうか?
    
    えーっと、たった 3 行のコードですが、1 行 1 行の意味をご自身で説明することはできますか?
    たとえば shape1 は意味があるのかとか、oMissing の値はどうなっているのかとか...
    
    とはいえ、アドインとなると他にも心配な点がありますので、
    とりあえず、お試しに AddPicture() メソッドでは正しく動作をするかご確認ください。
    
    Word.Document activeDocument = Globals.ThisAddIn.Application.ActiveDocument;
    
    if (activeDocument != null) {
        activeDocument.Shapes.AddPicture(@"C:\酉頭の人は病気.jpg");
    }
記事No.56749 のレス /過去ログ95より / 関連記事表示
削除チェック/

■78225  Re[1]: 子フォームで親フォームを閉じる
□投稿者/ Jitta -(2015/12/24(Thu) 22:08:29)
    No78099 (SVO さん) に返信
    やりたいことがはっきりしているのだから、それをコードに翻訳すれば良いだけなんだけど。
    
    Form1.button1 をクリックしたときに、Form2 を表示したい。
    →
    Form1 に Button を配置し、それを button1-1 と名付ける。
    button1-1 のクリックイベントを書く。
    void button1-1_clicked(object sender, EventArgs e)
    {
        Form2 を表示する
        このフォームを消す→this.Hide(); // Close にすると、アプリケーションが終了する(はず)
    }
    
    ここで、「Form2 を表示する」をどうするか。単純には、こうする。
    →
    new Form2().Show();
    
    これを続けると、Form4 で困る。
    
    void button4-1_Click(object sender, EventArgs e)
    {
        Form3 を非表示にする
        Form1 を表示する
        this.Close();
    }
    
    ここで、Form1, Form3 が参照できない。
    Form2 の様に「new Form1().Show();」とすると、Form4 から表示する Form1 は、最初に表示したものとは異なる。
    同様の理由で、既にある Form3 を閉じることができない。
    参照できないのは、参照できるところに置いていないから。
    だったら、参照できるところに置けば良い。
    方法はいくつかあり、単純な方法は、「教えてやる」こと。
    →
    class Form2
    {
        public Form ParentForm
        {
            get;
            set;
        }
    }
    としておいて、
    void button1-1_Click(object sender, EventArgs e)
    {
        Form2 f2 = new Form2();
        f2.ParentForm = this;
        f2.Show();
        this.Hide();
    }
    
    ただし、Form2 については、Form3 だけではなく、Form4 まで教えなければならない。
    じゃぁ、Form4 には GrandParentForm プロパティを作るのか?
    それは面倒くさい。
    フォームを表示する順番が変わったり、表示非表示が変わったりしたら、変更量が大変なことになる。
    参照できるところに、プログラム中に使用する Form の配列があったらどうか。
    こんな風に書くことができる。
    →
    void button4-1_Click(object sender, EventArgs e)
    {
        formArray[2].Hide();
        this.Close();
        formArray[1].Show();
    }
    
    しかし、C# では、C/C++ のような、グローバル変数を宣言することはできない。
    なので、Form の配列を提供するクラスを作って、そのインスタンスを1つに制限してやる。
    インスタンスが複数あると、管理しているものとは違うリストを参照してしまうかもしれないからね。
    →
    class FormSore
    {
        // これが参照できるただ1つのインスタンス。
        private static FormStore instance = new FormStore();
        private List<Form> FormList
        {
            get;
            private set;
        }
        // コンストラクタを private にして、他からインスタンスを作らせない。
        private FormStore()
        {
            this.FormList = new List<Form>();
        }
        // ただ1つのインスタンスを参照するためのメソッド。
        public static FormSotore GetInstance()
        {
            return FormStore.instance;
        }
    }
    
    プログラムの開始時に、Form のインスタンスをこのリストに登録してやる。
    →
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        FormStore sotore = FormStore.GetInstance();
        store.FormList.Add(new Form1());
        store.FormList.Add(new Form2());
        store.FormList.Add(new Form3());
        store.FormList.Add(new Form4());
        Application.Run(store.FormList[0]);
    }
    
    これで、各ボタンの処理は、希望する処理のままに書ける。
    void button1-1_Click(...)
    {
        this.Hide();    // Form1が消え
        FormStore.GetInstance().FormList[1].Show(); // Form2が表示されます。
    }
    void button2-1_Click(...)
    {
        this.Hide();    // Form2が消え
        FormStore.GetInstance().FormList[2].Show(); // Form3が表示されます。
    }
    void button3-1_Click(...)
    {
        FormStore.GetInstance().FormList[3].Show(); // Form4が表示されます。
    }
    void button4-1_Click(...)
    {
        this.Hide();    // Form4と
        FormStore.GetInstance().FormList[2].Show(); // Form3が消え
        FormStore.GetInstance().FormList[1].Show(); // Form2が表示されます。
    }
    
    これで、書かれていることは満足するのだけれど、終わりではない。
    フォーム右上の×ボタンをクリックすると Close してしまう。
    Show/Hide で制御したいので、勝手に「消去」されないように、「消去」時には「非表示」になるように変える。
    →
    // これを、Form1 以外に実装する。
    public Form2()
    {
        InitializeComponent();
        this.FormClosing += Form2_FormClosing;
    }
    void Form2_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (e.CloseReason == CloseReason.UserClosing)
        {
            // ユーザーが閉じようとしたときに、「戻る」扱いとする。
            // Form1 を表示して、
            FormStore.GetInstance().FormList[0].Show();
            // このフォームを「閉じる」イベントはキャンセルして、
            e.Cancel;
            // 非表示にする。
            this.Hide();
        }
    }
    
記事No.78099 のレス /過去ログ132より / 関連記事表示
削除チェック/

■81629  DataGridViewのデータアクセスが初回だけ遅い
□投稿者/ よこしま -(2016/10/20(Thu) 20:21:49)

    分類:[.NET 全般] 

    DataGridViewのデータアクセスで困っています。

    DataGridViewへの表示データは6万件程あるのですが、
    初回のデータアクセスだけ非常に時間がかかり、
    2回目からは高速でデータにアクセスできます。

    データへのアクセスは、以下の様なfor文でアクセスしてます。

    for (iCnt = 0; iCnt < this.dataGridView_Test.Rows.Count; iCnt++)
    {
    DataGridViewRow row = this.dataGridView_Test.Rows[iCnt];

    for (iCnt2 = 0; iCnt2 < this.dataGridView_Test.Columns.Count; iCnt2++)
    {
    if (row.Cells[iCnt2].Value.ToString().Contains(strSearchVal))
    {
    // 処理
    }
    }
    }

    最終行データへのアクセス時間
    初回 :5秒79
    2回目:1秒27

    この差は一体なんなのでしょうか?
    ネットでいろいろと検索してもなにもヒットしません。
    大変申し訳ないのですが、DataGridViewに精通している方、ご回答の程よろしくお願い致します。
親記事 /過去ログ139より / 関連記事表示
削除チェック/

■95725  Re[1]: VPN接続設定(RX1210)
□投稿者/ 鏡月 -(2020/09/09(Wed) 13:17:28)
    件名を間違えてしまったため、再投稿させていただきます。
記事No.95722 のレス / END /過去ログ166より / 関連記事表示
削除チェック/

■96250  Re[4]: トラックバーの一部に色を付ける方法
□投稿者/ 鮭 -(2020/11/05(Thu) 21:42:48)
    ありがとうございます。

    まさにこれが求めていた方法でした。

    あと、チックを付けたいのですが、
    地道に書くのなら


    Dim trackBarTicksRect As Rectangle = Rectangle.FromLTRB(channel.Left, channel.Bottom + 10, channel.Right, channel.Bottom + 20)

    TrackBarRenderer.DrawHorizontalTicks(g, trackBarTicksRect, 11,
    System.Windows.Forms.VisualStyles.EdgeStyle.Raised)
    こんな感じになると思いますが
    標準の機能を使って描画するにはどのようにしたら良いですか?
    TBM_GETNUMTICSなどの関数で取得したものとリンクさせたいのですが。

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

■96251  Re[5]: トラックバーの一部に色を付ける方法
□投稿者/ KOZ -(2020/11/06(Fri) 09:07:02)
    2020/11/06(Fri) 09:10:02 編集(投稿者)
    2020/11/06(Fri) 09:09:56 編集(投稿者)

    No96250 (鮭 さん) に返信
    > 標準の機能を使って描画するにはどのようにしたら良いですか?
    > TBM_GETNUMTICSなどの関数で取得したものとリンクさせたいのですが。

    オーナードローする以上、地道に描いていくしかありません。

    TrackBar で動作するか未確認ですが、

    「WM_PAINTでTextBoxがちらつく」
    https://social.msdn.microsoft.com/Forums/ja-JP/d5ac1426-1082-43a1-a02f-677dad1ee3ca/wmpaint12391textbox1236412385124251238812367?forum=csharpgeneralja

    のように、ビットマップから hdc を作成し、WM_PAINT の WPARAM にセットしてやるとコントロールが描画をしてくれるので、それを加工して表示する、といった方法が使えるかもしれません。
記事No.96227 のレス /過去ログ167より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -