AIと戦って、あなたの人生のリスク診断 >>

お世話になります
Visual Studio 2010 C++/CLIで開発していおります。

Treeviewの展開時のマークを+から△に変えたいのですが、
プロパティのどの項目で変えるのか教えていただけないでしょうか。

A 回答 (3件)

>みなさん、どの様にして三角マークに変えているのでしょうか?


……オーナードロー、じゃないかなぁ。実際やるとしたらどういう風なのかは知らないけど。
http://msdn.microsoft.com/ja-jp/library/system.w …(v=vs.110).aspx
http://nekojarasikou.seesaa.net/article/13032909 …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

オーナードローで色々変更できるんですね。
今一使い方が理解できていないので、少し勉強して、ダメでしたらもう一度ご相談させてください。

お礼日時:2014/12/10 17:43

>みなさん、どの様にして三角マークに変えているのでしょうか?



描画ルーチンを変えたりとかSystem.Windows.Forms.TreeViewと同等のコンポーネント作ったりとかしてるんでは?
実はSystem.Windows.Controls.TreeViewでしたというオチもありそうだけど。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
System.Windows.Forms.TreeViewで間違いございません。

やはり自作しかないのですね

お礼日時:2014/12/10 17:38

ご希望のプロパティは存在しません。

    • good
    • 0
この回答へのお礼

回答ありがとうございます
やはりないのですか
みなさん、どの様にして三角マークに変えているのでしょうか?

お礼日時:2014/12/05 09:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QCString から LPCTSTRの型に変換

visual studio 2013 VC++を使用していますが、WINDOWSの関数に渡すためにCString からLPCTSTRに変換する必要があります。実際にどのようにするのかわかりません。
例えば、以下のサンプルは他の質問コーナーの回答をアレンジしたものです

CString str = _T("ABC");
int siz = str.GetLength()+1;
LPCTSTR pszFName = new TCHAR[siz];
_tcscpy_s( pszFName, siz, str );

で変換するのですが
LPCTSTRからwchar_t*へ変換できませんとエラーがでます
_tcscpy_s()は使用できないのでしょうか

Aベストアンサー

>APIはCStdioFile の Open()でファイル名を与えるところ

APIではないようですが……。

http://msdn.microsoft.com/ja-jp/library/ee247566.aspx
ならば、そのままCStringの変数渡せば、よろしく処理してくれると思いますけど。

QGetPrivateProfileStringでiniファイル読込む処理を詳しく知りたいのですが・・・

お世話になっています。

iniファイルを読込み、各変数に代入するC言語のDLLを作成したいのです。
このサイトの投稿や、MSDNなどにも載っていたのですが、
少し理解に苦しみます。

現在まで、理解した点がwindows.hのインクルードを
記述するところ辺りです。
iniファイルは下記のようなレイアウトです。

---<mst.ini>----------------------------
[user]
name=username
ID=userid
[pc]
pcname=FMV
----------------------------------------

#include<windows.h>は記述することまでは
分かりましたが、以下から進みません。。。

GetPrivateProfileString("")

初心者で申し訳ありませんが、お助け願います。

Aベストアンサー

こんにちは。itohhといいます。

サンプルを載せておきます。

mst.iniファイル内の[user]セクションのnameキーの値を取得する。
DWORD dwLen=0;
char strBuf[100];
dwLen = GetPrivateProfileString("user",       // セクション名
                "name",       // キー名
                "soushi_ni",     // デフォルト値
                strBuf,       // 読み込んだ値を格納するエリア
                sizeof(strBuf),   // 上記のエリアのサイズ
                "mst.ini" );     // iniファイル名

解説:
iniファイル名をフルパスで指定しないとWindowsのディレクトリにあるものと判断されます。
Win9xなら「c:\windows」、WinNT系なら「c:\WinNT」。

[user]セクションのnameキーがないときは、デフォルト値で指定した値が設定させます。

復帰値「dwLen」は実際に設定した値(文字列)の長さが返されます。

こんにちは。itohhといいます。

サンプルを載せておきます。

mst.iniファイル内の[user]セクションのnameキーの値を取得する。
DWORD dwLen=0;
char strBuf[100];
dwLen = GetPrivateProfileString("user",       // セクション名
                "name",       // キー名
                "soushi_ni",     // デフォルト値
                strBuf,       // 読み込んだ値を格納するエリア
             ...続きを読む

QC#でtreeviewの指定ノードを選択する

C#にて、
treeviewでの選択ノードを記憶しておき、
treeviewを一度更新(削除し作成)し、
記憶してあるノードを再び選択する。という動きをしたいです。

TreeNode tn = new TreeNode();
tn = treeView1.SelectedNode;

//ここでDB再読み込み→treeView再作成

treeView1.Focus();
treeView1.SelectedNode = tn;

としているのですが、TopNode選択状態になってしまい、
最初に選択していたNodeを選択してくれません。


どなたかご教授願います。
よろしくお願いいたします。

Aベストアンサー

TreeViewを再作成した時点で、ノードのインスタンスがすべて新しく作り変えられているので、再作成前のノードで選択させることはできません。

再作成前に選択ノードのフルパスを記憶しておいて、作成後にフルパスを辿って選択させることならできます。フルパスを辿るのは自力になるかと。記憶したフルパスをPathSeparatorでSplitしてルートから順に子ノードを探していく方法くらいしか思いつきませんが・・・。
ただ、同じ階層に同じテキストのノードがあると破たんします。

QWPFのフォントカラー変更について(C#で実装)

WPFのフォントカラー変更について(C#で実装)

WPFでTEXTBOX全体のフォントカラーを変更する場合は「Foregroundプロパティ」で色を指定すればよいのですが、TEXTBOX内の1部分のみフォントカラーを変更する場合はどうすればよいのでしょうか?

そもそも、TEXTBOX内の1部分のみフォントカラーを変更することはできないんでしょうか?

 <例>
  TEXTBOXの値:始めまして、【Goo太郎】です。宜しくお願いします。

  ⇒【Goo太郎】のみ赤字フォントに変更したい・・・・。


分かる人がいましたら、教えてください。
        
[環境]
・Visual Studio 2008
・.net Framework3.5
・C#

Aベストアンサー

http://msdn.microsoft.com/ja-jp/netframework/ff621556.aspx
を参考にすると TextBox 単位でしか 前景色・背景色の指定ができないみたいですね。
そうすると、こういう方法↓で逃げるとか。
<TextBox Margin="0,0,0,0" VerticalAlignment="Top" Height="25" Text="始めまして、           です。宜しくお願いします。" TextWrapping="Wrap" Foreground="black" Background="Transparent" />
<TextBox Margin="60,0,0,0" VerticalAlignment="Top" Height="25" Text="【Goo太郎】" TextWrapping="Wrap" Foreground="red" Background="Transparent" />

QC#で動的にコントロールを取得するにはどのようにしたらよいのでしょうか

C#で動的にコントロールを取得するにはどのようにしたらよいのでしょうか?

C#2008ですが、Form1にTextBoxが30個あって、textBox1~textBox30という名前がついています。
このテキストボックスの値をForm2で取得したいのですがなかなかうまくいきません。

-------------------------
Form2:
private void Form2_Click(object sender, EventArgs e){
 Form1 fm = new Form1();
 
 int No = 15; //ここを1~30まで動的にしたい
 string result = fm.textBox15.Text; //直接comboBox_type15と書くのではなく「"comboBox_type" + No.ToString()」のようにしたい
 MessageBox.Show(result);
}
-------------------------

コントロールを配列にして

Control[] ctlArray = new Control[30] { fm.textBox1, fm.textBox2, …, fm.textBox30 };

のようにしてみましたが、エラーになってしまいます。
いろいろネットで検索してみたのですが、「コントロール名を動的に文字列で作成して使う」という方法がどこにも載っていなく、数時間格闘しています。
すみませんがご教授願います。よろしくお願いいたします。

C#で動的にコントロールを取得するにはどのようにしたらよいのでしょうか?

C#2008ですが、Form1にTextBoxが30個あって、textBox1~textBox30という名前がついています。
このテキストボックスの値をForm2で取得したいのですがなかなかうまくいきません。

-------------------------
Form2:
private void Form2_Click(object sender, EventArgs e){
 Form1 fm = new Form1();
 
 int No = 15; //ここを1~30まで動的にしたい
 string result = fm.textBox15.Text; //直接comboBox_type15と書くのではなく...続きを読む

Aベストアンサー

どう回答したものかとかなり悩みました。
いろいろな考え方があるので。。。

コンストラクタのオーバーロードで自分自分を渡すという
suffreさんの方法もなるほどーと思いました。
「あり」だと思います。

他に方法がいくつかあります。
2つだけ紹介します。

ひとつは、
fm.ShowDialog(this);
と、Owner指定なるものを使って、自分を渡す方法です。
これが一番楽かな、と思っています。
渡されたForm2の方では、
this.OwnerをForm1でキャストすれば、
suffreさんの方法と同じようにForm1のPublicのメンバに
アクセスできます。
例えば、
((Form1)this.Owner).textBox3.Text = "hoge";
です。
オーバーロードとか書かなくていいのでその点簡単でしょう。

もう一つは、Form2の側にPublicなメンバ(特にプロパティ)を
設けて、それを通じてやり取りする、という方法です。
Form1の側では、
Form2 fm2 = new Form2();
としたあと、
fm2.xxx = ・・・
で必要な情報を相手に渡し、
textBox3.Text = fm2.yyy;
というように情報を受け取ります。

DialogResultの値は見ないのでしょうか?
もし見て、それがOKの場合のみ、Form2の側で設定された値を
使いたいという場合、以下のようになるはずです。

if (fm2.ShowDialog(this)== DialogResult.OK) {
textBox3.Text = fm2.yyy;
}

もちろん、初めの方法でも、予めForm1の側で変更される可能性の
あるメンバをバックアップしておいて、Cancelだったらそれを使って
元に戻すということもできますが。。。

。。。

初めの方法を嫌がる人は(おそらくたくさん)います。
・Form2の側にForm1という文字を書かなくてはならない
 → 子は親に依存させたくない
・Form1の側でForm2でForm1の値変更の管理ができない
などという理由からです。
後者の方法ならば、
・Form2の側にForm1という文字を書かないで済む
・最終的に、Form2側で入れた値を使うかどうかがForm1側で分かる
からです。

丸岡孝司著「絶対現場主義 Visual C#実践講座」では、前者の方法について、
以下のように書かれています。
http://www.amazon.co.jp/%E7%B5%B6%E5%AF%BE%E7%8F%BE%E5%A0%B4%E4%B8%BB%E7%BE%A9Visual-%E5%AE%9F%E8%B7%B5%E8%AC%9B%E5%BA%A7%E2%80%95%E9%96%8B%E7%99%BA%E3%81%AE%E7%8F%BE%E5%A0%B4%E3%81%8B%E3%82%89%E7%94%9F%E3%81%BE%E3%82%8C%E3%81%9F%E5%AE%9F%E8%B7%B5%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF-TIPS%E9%9B%86-%E4%B8%B8%E5%B2%A1-%E5%AD%9D%E5%8F%B8/dp/4899771975
----------------------------
サブフォーム側では、「Owner」プロパティを呼び出し元画面の型でキャストすれば、
そのプロパティを「えへへ。参照し放題ですぜ」というわけだ。
さらに、フォームに乗せてあるコントロールのModifiersプロパティを
Publicなんぞにした日にゃあなた、こりゃタマリませんなあということになる。
いかがだろうか。実際問題、荒業も程があるのであって、決してこの方法を
選択してはならないぞ。
----------------------------

。。。

といいつつ、自分の趣味プログラムでは、
楽なので前者の方法ばかりを使っています。。。

どう回答したものかとかなり悩みました。
いろいろな考え方があるので。。。

コンストラクタのオーバーロードで自分自分を渡すという
suffreさんの方法もなるほどーと思いました。
「あり」だと思います。

他に方法がいくつかあります。
2つだけ紹介します。

ひとつは、
fm.ShowDialog(this);
と、Owner指定なるものを使って、自分を渡す方法です。
これが一番楽かな、と思っています。
渡されたForm2の方では、
this.OwnerをForm1でキャストすれば、
suffreさんの方法と同じようにForm1のPublicのメンバに
ア...続きを読む


人気Q&Aランキング