1 名前:デフォルトの名無しさん mailto:sage [2010/03/22(月) 21:35:10 ] (#゚ー゚)つ < C#、.NETの話題はこちらでどうぞ。 前スレ C#, C♯, C#相談室 Part55 (実質56) pc12.2ch.net/test/read.cgi/tech/1260111240/ Visual C# 2008 Express Edition 日本語版 www.microsoft.com/japan/msdn/vstudio/express/vcsharp/ その他テンプレ>>1-5 くらい
152 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 13:17:13 ] >>150 お前が.NETスレ立てて頑張ってくれ
153 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 13:17:14 ] 底辺同士仲良くすればいいのにね
154 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 13:18:45 ] ですね
155 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 13:19:26 ] .NETスレがあっても事実上C#スレになっちゃうからな VBスレ以外の.NET関連のスレでVBのコードはほとんど見かけない
156 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 13:21:39 ] C#でコード例とか書いたら、「C#わからないのでVBのコードください」とか言うやつが 出てくるだけ。 なので、言語ごとでいいんじゃね?
157 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 13:24:49 ] コンバートしろって言って置けばいいんじゃね? コンバートしてくれるサイト www.developerfusion.com/tools/convert/vb-to-csharp/
158 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 13:25:06 ] 俺VB.NETほとんど知らないけど、MSDNのサンプル位なら余裕で読めるな .NETFrameworkを使う以上、そんなに差は出ないんで
159 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 13:26:24 ] >>157 ところが「変換したものをコピペしてみましたが動きません」とか言い出すんだ
160 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 13:27:27 ] 面倒だからC#で実行ファイル作って、VBソースとして復元しろw
161 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 13:31:24 ] >>156 C#とVBってキーワードが違うだけなのに。それはOOPが理解できてないってことなんじゃ?
162 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 13:32:49 ] .net必須 アレフガルドを散歩しよう www1.axfc.net/uploader/Sc/so/97427.zip tsushima.2ch.at/s/news2ch54394.png 元のマップ xb_lim.at.infoseek.co.jp/dq/1zentai.png
163 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 13:39:40 ] VBにしかないの無かったっけ Myなんたら それはそれとしてRichTextBoxで挿入/上書きモードが解る方法ないですか
164 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 13:52:51 ] >>163 ない キーイベントで自分で管理する
165 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 13:59:44 ] >>163 名前付き引数とか省略可能な引数とか。 COMを呼ぶときに便利だよ。 C#からExcelを呼ぶときにMissingを死ぬほど埋めるのはさすがにしんどい。
166 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 14:04:46 ] 最近プログラム初めたのですが(C#) 今開発中のソースコードを見せて おっ これは! とか こいつw とか わいわいできるスレッドはありますか?
167 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 14:07:59 ] >>165 名前付き引数と省略可パラメータはC#4.0で追加 なんかもうCOMはラッパー使わずに全部dynamicでやってもいいんじゃないかとも思うけどな Silverlight4なんかそうなってる
168 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 14:34:14 ] >>167 あと、インテリセンスだけは効いてくれるとありがたいんだけどなぁ。
169 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 14:35:10 ] >>167 IDispatchはともかくIUnknownはどうすんのよ
170 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 14:36:44 ] dynamicではキャストも動的にバインドされるから問題ない
171 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 14:50:31 ] >>163 public partial class Form1 : Form { [DllImport("user32.dll")] public static extern int GetKeyboardState(byte[] lpKeyState); static bool isOverType() { byte[] barr = new byte[256]; const int VK_INSERT = 0x2D; GetKeyboardState(barr); return 0 == (barr[VK_INSERT] & 0x01); } public Form1() { InitializeComponent(); setTextMode(); } void setTextMode() { toolStripStatusLabel1.Text = isOverType() ? "Ins" : "Ovr"; } private void richTextBox1_KeyUp(object sender, KeyEventArgs e) { setTextMode(); } } こんな感じでいいらしい。
172 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 15:01:43 ] >>171 Ins状態はコントロールごとに独立してるから、キーのトグル状態調べるだけじゃダメ
173 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 15:28:32 ] VS(2008)でボタンを作成後、Visibleプロパティをfalseにすれば当然「表示されなくなる」が その状態で他の要素から"Perform.Click"しても実行されないのは仕様? Visibleは可視/不可視の設定だけだと思うんだが、Enableみたいな動き方をしてちょっと困ってる。
174 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:05:43 ] はは、画面上に存在してない物をどうやってクリックするって言うんだい
175 名前:173 mailto:sage [2010/03/28(日) 16:21:48 ] >>174 プログラムの内部的には有効だから動くんじゃないかと思っていたんだが、動かないのか。 ラベルなんかはVisibleをfalseにしても使えるんで、当然ボタンも使えると思っていた。
176 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:24:35 ] ラベルの何のイベントだよ
177 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:25:10 ] >>172 とりあえずは動いてるんだが(テストアプリだけに独立してIns/Ovr状態が働いて いるというレベルで)、正しくはどうやるの?
178 名前:173 mailto:sage [2010/03/28(日) 16:29:35 ] >>176 ただ文字列を格納するだけ。 まあでも出来ないのが仕様と分かったんでd。
179 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:33:02 ] >>178 ラベルの格納とイベントはちげーだろw 表示されてないってことはイベント拾うための処理がスルーされるってことだぞw
180 名前:173 mailto:sage [2010/03/28(日) 16:35:37 ] >>179 dd。 了解(`・ω・´)
181 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 16:36:04 ] >>177 >>164 よ IsOverwriteModeがあるMaskedTextBoxのOnKeyDownでもそう実装してる RichTextBox二つ並べて、片方でInsキー押して上書きモードにしても もう片方のRichTextBoxの方は挿入モードのままでしょ この状態でどっちにフォーカスがあろうがGetKeyboardStateで取れるInsキーのトグル状態は同じ
182 名前:177 mailto:sage [2010/03/28(日) 17:02:52 ] おー、駄目だわ。メンドウだな。
183 名前:177 mailto:sage [2010/03/28(日) 17:30:34 ] [DllImport("user32.dll")] public static extern int GetKeyboardState(byte[] lpKeyState); static bool isOverType() { byte[] barr = new byte[256]; const int VK_INSERT = 0x2D; GetKeyboardState(barr); return 0 != (barr[VK_INSERT] & 0x01); } void setTextMode(ToolStripStatusLabel lab) { lab.Text = isOverType() ? "Ovr" : "Ins"; } bool OverType1 = false; bool OverType2 = false; public Form1() { InitializeComponent(); toolStripStatusLabel1.Text = OverType1 ? "Ovr" : "Ins"; toolStripStatusLabel2.Text = OverType2 ? "Ovr" : "Ins"; setTextMode(toolStripStatusLabel3); setTextMode(toolStripStatusLabel4); } private void richTextBox1_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Insert) OverType1 = !OverType1; toolStripStatusLabel1.Text = OverType1 ? "Ovr" : "Ins"; setTextMode(toolStripStatusLabel3); } private void richTextBox2_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Insert) OverType2 = !OverType2; toolStripStatusLabel2.Text = OverType2 ? "Ovr" : "Ins"; setTextMode(toolStripStatusLabel4); } スレの肥やしに、試してみた比較コードは貼っておこう。自分で管理せにゃならんのか。
184 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 18:03:08 ] Visible=Falseだとイベントも向こうになるよ。
185 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 22:16:40 ] (`・ω・´)
186 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 23:04:39 ] ファイルシステムを単体テストするときのために、Fileクラスなどを置き換えるクラス作ってる人いる? StrategyパターンでFileクラスとテスト用のFileクラスを切り替えられるようなやつ ちょっと必要になったから同じようなことしている人がいたら意見聴きたい
187 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 23:06:36 ] ファイルシステムなんて作ろうとも思わない。
188 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 23:07:26 ] なんでStrategy? IFileでいいじゃん
189 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 23:12:51 ] Fileは無理じゃないかな、staticだし。mscorlib.dll 内だし。 プロキシかませてやることを抽象化しておいて、それを置き換えるくらいしか。 どのみちファイルシステムの単体テストにはなんないけど。
190 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 23:19:32 ] >>187 ,189 説明不足でした ファイルシステムを使うシステムの単体テストです >>188 インターフェイスだとFileクラスに適用できないので
191 名前:デフォルトの名無しさん mailto:sage [2010/03/28(日) 23:20:13 ] こういうやつです public class Client { public FileBase FileBase { get; set; } public void DeleteXXXFiles() { ... FileBase.Delete("aaa.txt"); ... } [TestFixture] public class ClientTest { [Test] public void DeleteXXXFilesTest() { var c = new Clinet(); var testfile = new TestFile(); c.FileBase = testfile; c.DeleteXXXFiles(); Assert.IsFalse(testfile.Files.Contains("aaa.txt")); } }
192 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 00:09:34 ] こういうのMockっていうみたいだな。英語の情報ばっかで読めない・・・ 定番のファイルシステムモックとかないんかな
193 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 00:36:39 ] 単体テストのときには実際にファイル作るからそんなのいらない
194 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 00:40:59 ] ばかばっか
195 名前:192 mailto:sage [2010/03/29(月) 02:01:26 ] >>194 は俺ではないです。念のため
196 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 08:54:39 ] ファイルぐらいだったら作っちゃった方が早いかもねえ。 ネットワークとかDBだったらモックあるならモック使うけど。
197 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 12:47:20 ] Windows7用APICodePack使ってDirect2Dためしてみた。 直径80ピクセルぐらいのEllipseを、あらかじめ用意していたSolidBrushからランダムに切り替えながら3000個描画するのに130ミリセクぐらいなんだがこんなもん? マシンはCore2Duo9300、グラフィックは965Expressのオンボード。 同じような内容をGDI+でやるとダブルバッファーなしで9秒ぐらいだった。ダブルバッファーありだと40ミリせく。
198 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 12:54:55 ] C#からDirect2D使う意味がわからん C++向けのちょっと低レベルなWPFだろあれ
199 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 17:18:09 ] >>197 よくわからんけど.netでグラフィックって考えてるならやねうらお氏のところが 確か.net時代のゲームつくりってのでライブラリ公開しててそれが標準コントロールに 描画してた記憶があるのであれでみてきてみなよ
200 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 17:50:10 ] >>199 それ触ったことあるけど大した機能もない割に癖が強くて気持ち悪い コントロールに直接描画するだけならDirect3Dで普通にできる
201 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 17:54:12 ] C++でしか触ったことないけどhWndからサーフェイス取って描画できるから C#でできないってことはないわ
202 名前:197 mailto:sage [2010/03/29(月) 19:19:02 ] 説明足らずですいません。 試したかったことはVista以降で動くはずのDirect2Dでの高速描画のテストです。 GDI+よりも高速にかけると色々と都合が良かった(既存のライブラリの以降に)のでどんなもんかと。 自分も詳しく把握してないですが,要はDirect3Dサーフェスを使ってかけるアクセラレーションの聞く2D描画APIという認識でいます。 WPFとかぶるところもありますが、Direct2Dはよりプリミティブな描画APIだと思っています。 テキスト描画とかからむとNativeAPIもしくはそのラッパーでゴニョゴニョできれば都合いいかとCodePackいじってみた次第です。
203 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 19:52:57 ] vista以降はGUIの変更の関係で従来の2D部分はソフトウェアレンダリングじゃなかったっけ? Direct2Dの深部がどうなってるか知らんけど
204 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 19:54:54 ] ソース www.4gamer.net/specials/tooearlytogetvista/001/tooearlytogetvista_003.shtml
205 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 20:06:51 ] Direct2DってWPFとは違って即時モードで描画するんだっけ さすがに図形を毎回計算し直したりはしてないだろうけど 3000回テクスチャ切り替えてるとしたら結構なコストなんじゃないの
206 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 20:08:27 ] >>205 描画命令を発行してもプログラム側でタイミングを見計らってバッファ切替するなら効率もいいけど windowsのGUIのように動かれると効率はよくないな
207 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 20:18:00 ] WPFでは宣言的に描画命令出してあとはお任せだから あまり動かない要素を自動的にビットマップでキャッシュしたりするよ たぶん現状WPFの方が遅いんだろうけど仕組み的にはWPFの方がUIには適してるんだろうな
208 名前:197 mailto:sage [2010/03/29(月) 21:40:01 ] >205 MSのサンプルだがInvalidate時にDirect2Dもろもろをラップしたクラスから次のメソッドに飛んでくる。 private void RenderScene(){ CreateDeviceResources(); if (renderTarget.IsOccluded) return; renderTarget.BeginDraw(); renderTarget.Clear(WhiteBackgroundColor); foreach (DrawingShape shape in drawingShapes) shape.Draw(renderTarget); renderTarget.EndDraw(); } shapeの中は protected internal override void Draw(RenderTarget renderTarget){ if (_fill) renderTarget.FillRectangle(_rect, _parent.brushes[_selectedBrushIndex]); else renderTarget.DrawRectangle(_rect, _parent.brushes[_selectedBrushIndex], _strokeWidth); } こんな感じ。 renderTarget.FillRectangleの中まで見てない。これもC++/CLIで実装されたラップクラス。 shapeまわりとかあくまでサンプルなのでたぶん使い易い分かなり不効率なことやってそうだけど・・・
209 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:18:07 ] 単なる丸投げラッパーだろ たぶんC++で同じようなの書いてもほとんど速度は変わらないと思うよ
210 名前:デフォルトの名無しさん mailto:sage [2010/03/29(月) 22:31:42 ] Form1からForm2のウィンドウを生成するとウィンドウ自体は アクティブになるのですが、Form2上にDockさせたWebBrowser コントロールにフォーカスが当たっておらず、1回クリックしないと マウスホイールに反応してくれません。 Form2.Active()やForm2.Focus()あるいはWebBrowser.Focus() では制御出来ないのでしょうか?
211 名前:デフォルトの名無しさん [2010/03/30(火) 12:09:55 ] C#は糞 pc12.2ch.net/test/read.cgi/tech/1246520657/
212 名前:163 mailto:sage [2010/03/30(火) 12:36:03 ] 亀だけど色々ありがとう しかしTextBox系はあちこちウンコだのう かと言って巷のコンポーネントで日本語完全対応のは無いっぽいし 困ったもんだ
213 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 12:36:11 ] >>210 なんのこっちゃと思ってたがこういうことか webBrowserの場合、マウスをクリックするとホイールが効いてスクロールするってことは その中のDocumentにフォーカスを当てないとだめだよ サンプルコード ideone.com/MRJeDOwz でこのDocumentなんだけどNavigatedイベントもしくはDocumentCompletedイベント 発生後じゃないと無いので下手な場所でフォーカス当てるとこけるから
214 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 12:39:56 ] >>213 昔のExcelでもあったよな、前面にしただけじゃダメでクリックしないとホイール効かないっての それに対処するフリーウェアあったけど・・・今でも配布してるんだろうかってスレチだな
215 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 12:42:48 ] >>214 webBrowserは便利そうでめんどくさいんだよな 使いこなせると強力なレンダリングエンジンの恩恵受けれるんだが
216 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 12:49:47 ] GraphicsPathのIsOutlineVisibleとIsVisibleの違いが分からない 引数違うだけ?
217 名前:デフォルトの名無しさん mailto:sage [2010/03/30(火) 13:01:09 ] >>213 ありがとうございます。質問の仕方が下手でした…。 そのコード通りに実装してフォーカスが当たるようになりました。 あと自分で試したものでは下記のコードでも同様に動きました。 private void Form2_Activated(object sender, EventArgs e) { this.ActiveControl = WebBrowser; }
218 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 22:13:07 ] TextBoxを半透明にしたいのですが調べてもいまいちわかりません・・・。
219 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 22:14:29 ] >>218 無理
220 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 22:15:26 ] できません 見た目を気にするならきっぱり諦めてWPFに移行しましょう
221 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 22:21:40 ] 無理ってことは無いけど面倒
222 名前:デフォルトの名無しさん mailto:sage [2010/03/31(水) 22:25:23 ] 専用に枠のない子ウィンドウを開くようなアホな方法はないこともないけど諦めた方がいい
223 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 08:37:06 ] フォームがアクティブでない時にキーが押されると フォームの処理を中断するようにしたいのですが どのようにすればいいでしょうか、ご教授宜しくお願いします
224 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 13:51:41 ] つttp://hongliang.seesaa.net/article/7539988.html
225 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 22:20:09 ] .NETがない環境でも動かしたい、見た目もほどほどには気にしたいって需要もあるわけで 不可能でなければアホな方法もアリだろう
226 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 23:16:13 ] インフラ用のTextBoxBase#BackGroundImageに背景画像を設定したら、どうなるんだろ。 試してみる気もしないが、これでナンチャッテ半透明TextBoxにならんかな?
227 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 23:23:27 ] .NETなしでC#動かしたかったらSilverlightくらいしかないな ちなみにSilverlightなら全くコード書かずにできる
228 名前:デフォルトの名無しさん mailto:sage [2010/04/01(木) 23:57:14 ] まだ半透明がどうのとか言ってるのか。 そういう人はそもそもその「半透明」が何を意味してるのか、 恐らくちゃんと突き詰めて考えてないだろ。 透けて見えるようにしたいのはコンテナ(フォーム)の奥のコントロール(ウィンドウ)? それって透けてるのはTextBoxじゃなくてコンテナだろ。 TextBoxを半透明にしたってコンテナが透けて見えるだけだが、嬉しいかそんなの。
229 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 00:19:31 ] オサレな外観にしたいんじゃない?
230 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 00:22:17 ] WPF使わないと無理じゃないかな 外のコントロールだとオーナードロー駆使すればわりとなんとかなるが textboxだけはかなり深部いじってできるかどうか・・・?ってレベルのような
231 名前:223 mailto:sage [2010/04/02(金) 14:20:40 ] 223です。 224の方返信ありがとうございます。 参考にさせていただきます。 「TextBoxを透明に」についてですが このようなのはどうでしょうか? ttp://www1.axfc.net/uploader/Sc/so/99375.zip&key=C#
232 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 14:26:20 ] 半透明って言ってるだろ
233 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 16:50:15 ] Windows使ってて.NETが無い環境ってどれだけあるんだろうな キチガイとしか思えない
234 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 17:17:58 ] >>228 そんなに貧困な脳みそを自慢するなよw そのコンテナがピクチャボックスだったら嬉しい事もあるだろ
235 名前:デフォルトの名無しさん mailto:sage [2010/04/02(金) 19:56:05 ] B地区がみえたりしたらそこに文字入力したくなくなるけどね
236 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 11:26:11 ] 俺の金曜日の最後の書き込みからだれも書き込んでないことに泣いた・・・
237 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 11:28:46 ] 規制食らったからねえ あと専門板住人減ってるからあんまり詰まんないことして人いなくなるようなことしないでおこうよw
238 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 11:09:25 ] 静かですな〜 こんなところへ質問しないと進まなかった人たちは がんばってぐぐって解決してるのかな?
239 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 12:44:30 ] 俺もそうだけどここにいるのはほとんどが趣味プログラマだろ 別に分からなきゃ分からないで困るわけじゃない
240 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 18:01:57 ] >>238 質問が無いのは大規模規制があったから。
241 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 18:23:00 ] 俺が規制されてないのに大規模規制とか笑わせる
242 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 19:16:45 ] 知らんがな
243 名前:デフォルトの名無しさん mailto:sage [2010/04/06(火) 21:53:08 ] >>240 どうみても>>238 はそれをわかって書いてるようにみえるが?
244 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 13:56:38 ] ComboBoxでドロップダウンリストをクリックすると、そのアイテムが一番上に来るようにしたい DataSourceにはList<T>をバインドし、SelectedIndexChanged内でリストをSuspendBinding() & ResumeBinding()して強制更新 これが上手く行かない ドロップダウンから選択すると、ドロップダウン内が真っ白になる それでもリスト自体は存在するらしく、クリックするとリスト自体は更新される この問題を解決する何かいい方法はないだろうか ちなみにList<T>をBindingList<T>にすると無限ループする SelectedIndexChanged内でリスト変更してるから当たり前っちゃ当たり前だけど
245 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 16:21:08 ] 単純にChangedイベント内部でフラグチェックで出来ない? bool changedEnabled = true; Changedイベント { if( changedEnabled ) { changedEnabled = false; 煮るなり焼くなり changedEnabled = true; } }
246 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 16:22:07 ] ああごめんちゃんと読んでなかった
247 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 16:23:25 ] 直接張るならhtmlエンコードしてくれ そうじゃないなら外部のコード貼れるところ使ってくれ
248 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 16:24:27 ] あれほどサンプルソースさらせと・・・
249 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 16:29:43 ] >>244 ピンポイントで対応できる少数を待つか、自分がはまった箇所を再現できる適当な ソースを晒してコードを見て対策考えれる多くの人から回答待つか どちらか選べ
250 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 16:29:47 ] これっぽちのソース我慢しろよww
251 名前:244 mailto:sage [2010/04/08(木) 16:36:58 ] 自己解決 リストデータの中に何時の間にかnullが紛れてて、取り除いたら動いた お騒がせしました 詫びがてらコードを晒しとく この手の需要は微妙にあるような気がしないでもないようなあるような private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { ComboBox cb = (ComboBox)sender; int selno=cb.SelectedIndex == -1) return; cb.BindingContext[cb.DataSource].SuspendBinding(); string selecttext=combodata[selno]; combodata.RemoveAt(selno); combodata.Insert(0,selecttext); cb.BindingContext[cb.DataSource].ResumeBinding(); }
252 名前:244 mailto:sage [2010/04/08(木) 16:39:37 ] ミス ×int selno=cb.SelectedIndex == -1) return; ○int selno=cb.SelectedIndex; if(selno==-1) return; ハンパにコピペするもんじゃないな