ふらっとVisual C#,C♯,C#(初心者用) Part105
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/06/23(日) 09:41:13.50他のスレッドでは書き込めないような低レベルな質問。
質問者自身なんだか意味がよく分からない質問。
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められることがあります、ご了承下さい。
なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
前スレ
ふらっとVisual C#,C♯,C#(初心者用) Part104
http://toro.2ch.net/test/read.cgi/tech/1366503422/
関連スレ
C#, C♯, C#相談室 Part79
http://toro.2ch.net/test/read.cgi/tech/1363632378/
コード貼るなら↓使ってください
http://ideone.com/
0002デフォルトの名無しさん
2013/06/23(日) 14:41:51.41乙乙
0003デフォルトの名無しさん
2013/06/24(月) 20:41:32.83これって結構問題の元だったりする?
0004デフォルトの名無しさん
2013/06/25(火) 00:48:44.68http://msdn.microsoft.com/ja-jp/library/4fkewx0t.aspx
>UrlEncode メソッドは、各空白文字をプラス記号 (+) に変換します。
0005デフォルトの名無しさん
2013/06/26(水) 08:42:53.74private delegate int EnumWindowsDelegate(IntPtr hWnd, int lParam);
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern int EnumWindows(EnumWindowsDelegate lpEnumFunc, int lParam);
----
IntPtr[] ahWnd = new ahWnd[0]; //←これをコールバックに渡したい
EnumWindows(new EnumWindowsDelegate(delegate(IntPtr hWnd, int lParam)
{
IntPtr[] ahWndTmp = (IntPtr[])lParam; //←ここで指定する方法が分からない
//配列に追加
Array.Resize(ref ahWndTmp, ahWndTmp.Length + 1);
ahWndTmp[ahWndTmp.Length - 1] = hWnd;
}
return 1;
}), (int) ahWnd); //←ここで指定する方法が分からない
0006デフォルトの名無しさん
2013/06/26(水) 08:55:20.66http://ameblo.jp/vcplusplusnote/entry-10205262635.html
こういう事をやりたいのですが、これだと上層のmenu内全部が対象になります。
これを同一menu内のセパレーターで区切ったブロック毎に行うスマートな方法ありますか?
現在は上記の方法でなく、if文でmenuの数だけ処理する野暮ったい事になってます。
よろしくお願いします。
0007デフォルトの名無しさん
2013/06/26(水) 09:00:21.89ていうか別にわざわざlParam経由させんでも
適当にフィールドなりローカル変数なりにList<IntPtr>置いといてそれにAddしていけばいいだろ
あと渡すデリゲートは一旦ローカル変数に取り出しておいて
EnumWindows終わった後でGC.KeepAliveしとけ
0008デフォルトの名無しさん
2013/06/26(水) 09:12:04.75var group1 = new ToolStripMenuItem[]{ item11, item12,.. };
var group2 = new ToolStripMenuItem[]{ item21, item22,.. };
...
みたいに配列を持っといて
private void dropDown_ItemClicked( object sender, ToolStripItemClickedEventArgs e )
{
if( group1.Contains( e.ClickedItem ) )
{
...
}
else if( group2.Contains( e.ClickedItem ) )
{
...
}
}
ってやるとか。
0009デフォルトの名無しさん
2013/06/26(水) 09:26:38.63var lst = new List<IntPtr>();
EnumWindows( ( hwnd, lParam ) =>
{
lst.Add( hwnd );
return 1;
}, IntPtr.Zero );
じゃあかんのか?
ローカルなデリゲートのメモリ上の位置って移動したっけ?
スコープ抜けるまでは有効なんじゃね?
0010デフォルトの名無しさん
2013/06/26(水) 09:29:13.02>EnumWindows終わった後でGC.KeepAliveしとけ
終わった後にGC.KeepAliveするの?
0011デフォルトの名無しさん
2013/06/26(水) 09:40:31.48ありがとう!まさかローカル変数にアクセスできる(ただしout変数にはアクセス出来ない)とは・・・C#楽すぎる
0012デフォルトの名無しさん
2013/06/26(水) 09:59:56.10> ローカルなデリゲートのメモリ上の位置って移動したっけ?
移動どころかファイナライズされうる。
マーシャリングでポインタに変換された後はマネージから参照されないからGC対象になる。
アンマネージ実行中にGCが走るとあぼーん。
>>10
GC.KeepAliveは「このオブジェクトはここまで使用中だから勝手に消すなよ」ってマーク。
0013デフォルトの名無しさん
2013/06/26(水) 10:16:54.92ありがとうございます
そのままだと自分の状態ではエラーが出たので、
イベントハンドラ内に配列を入れて、
private void dropDown_ItemClicked(object sender, EventArgs e)
{
if( group1.Contains(sender))
{
...
}
if( group2.Contains(sender))
{
...
}
}
としたところ、正常に使えました
まだ何もわかってないので、なんでエラーが出たのか分からないですが、自分の変更が間違ってないならこれで行きつつ、エラーの原因しらべて勉強します。
配列でグループ分けしつつ・・・というのは想像が付いたのですが、実現する方法を理解してませんでした。
勉強になりました。
ありがとうございました。
0014デフォルトの名無しさん
2013/06/26(水) 11:10:19.77GC.KeepAliveは不要だな。
0015デフォルトの名無しさん
2013/06/26(水) 11:43:41.83今のままじゃC++に勝てない
0016デフォルトの名無しさん
2013/06/26(水) 11:52:13.64スループットは向上するよ。
0017デフォルトの名無しさん
2013/06/26(水) 12:21:00.21お前?
0018デフォルトの名無しさん
2013/06/26(水) 12:24:57.55ゴミの片付けなんかしないで
作業に集中しなさい。
ゴミで部屋がいっぱいになったら
そのときに初めて片付ければ良いでしょ。
0019デフォルトの名無しさん
2013/06/26(水) 12:25:36.300020デフォルトの名無しさん
2013/06/26(水) 12:28:20.10並んでも勝ちはしないだろ
生産性のために払った代償でもあるしな
0021デフォルトの名無しさん
2013/06/26(水) 12:32:09.010022デフォルトの名無しさん
2013/06/26(水) 12:36:06.18並ぶなら生産性が疎かになるだろう
0023デフォルトの名無しさん
2013/06/26(水) 13:28:05.32IMEより先に取得して、imeのメニューを出さずに、プログラム側で取得するようにする方法はありますか?
SystemCmdKeyより先にフックされてしまうようで、うまくとれません。
WindowsMessageでできるのかもしれませんが、いまいちやりかたがわかりません・・。
Windows7 標準のIME です。
0024デフォルトの名無しさん
2013/06/26(水) 16:20:03.36すいません、書き間違いがありました。
× SystemCmdKey
○ ProcessCmdKey
よろしくお願いします。
0025デフォルトの名無しさん
2013/06/27(木) 04:51:23.99using (System.Xml.XmlReader xdr =
System.Xml.XmlReader.Create("RSSのURL"))
{
System.ServiceModel.Syndication.SyndicationFeed feed =
System.ServiceModel.Syndication.SyndicationFeed.Load(xdr);
}
System.Xml.XmlException はハンドルされませんでした。
Message=名前 'RDF' と名前空間 'http://www.w3.org/1999/02/22-rdf-syntax-ns#' が指定された要素は、フィードの形式を許可されていません。
どうすれば読むことができるのでしょうか。よろしくおねがいします
0026デフォルトの名無しさん
2013/06/28(金) 19:56:51.72「RSSの規格が古くて読めねえよ」
ってことです。
RDFが出てくるのはRSS1.0だけど、SyndicationFeedが対応してるのはRSS2.0とAtom1.0だから。
SyndicationFeed使っている限り、世界が滅亡するまで待っても読めないので
他の方法を探しましょう。私は知りません。
0028デフォルトの名無しさん
2013/06/30(日) 12:14:25.82byte[]をバッファーにしてFileStreamに書き込むわけですが、
今の時代(のPC性能とネットワーク速度)に適切なバッファーサイズってどのくらいなんでしょうか?
0029デフォルトの名無しさん
2013/06/30(日) 12:15:17.580030デフォルトの名無しさん
2013/06/30(日) 12:23:19.03そこで指定するバッファのサイズと一致しない
0031デフォルトの名無しさん
2013/06/30(日) 12:24:42.880032デフォルトの名無しさん
2013/06/30(日) 12:44:38.670033デフォルトの名無しさん
2013/06/30(日) 17:43:52.360034デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANCloseするのかDisposeするのか
どちらが正解ですか?
0035デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANまあusingを使え
0036デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0037デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0038デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0039デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANusing使えでFAですし
0040デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANDispose の本来の目的は、自分自身が責任をもつリソースの処分
0041デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANusingを使った方法も説明されているから問題ない
ただ意味的にって話なら、usingなしの単独の場合は
Closeを使ったほうがいいだろうな
0042デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0043デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0044デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0045デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANそのReaderなりWriterをusingで囲むわけにはいかない
0046デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANリソース解放の責任がどこにあるかというだけ
0047デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0048デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANファイルハンドル握ってんだよ
0049デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0050デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0051デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANそういうリソースをメンバに持ってるクラスこそIDisposableを実装すんだろが
0052デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANdouble型からRange型への変換方法を知っている方がいたら教えてください
0053デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANやりたいことは具体的に
0054デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANある関数で計算する
その計算結果をエクセルに出力させる
というプログラムです。
設定するものなのですか。
調べます、ありがとうございます。
0055デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0056デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN少しも具体的ではないよ
0057デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN具体的でなくてすみません
ユーザー設定の仕方がいまいちわからず
別の方法を探していました
CSVで出力すれば良いとわかったので
解決しました
ありがとうございます
0058デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0059デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANと思ったのですができませんでした
0060デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.AN0061デフォルトの名無しさん
2013/07/02(火) NY:AN:NY.ANあしからずorz
エクセルデータを読み込んで、double型の関数で計算
その計算結果をCSVに出力後、gnuplotでグラフ描いて終わり
プログラムは完成して納期に間に合わせることができます
アドバイスくれた方々に感謝です
0062デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.ANわざわざC#で作ってぼったくりか
0063デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN頼まれたのはコンソール版でのファイル入出力部分
最終的にはwindowsアプリケーションにしたいと言われています
0064デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN0065デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.ANコントロール作って、フォームに貼り付ける形にしたりVBAから呼び出したり、
officeのコントロールを叩いてWindowsフォームアプリからoffice呼び出す形にする
グラフの描画だけしたいならchartコントロールで。ただこのコントロールは非常に使いにくいw
0066デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN0067デフォルトの名無しさん
2013/07/03(水) NY:AN:NY.AN今のVBAってまだVB6なん?
0068デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.ANむしろそれエクセル要らねえな
0069デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.AN同意
0070デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.ANWebBrowserクラスを派生して非同期でデータをダウンロードするようにしているのですが、どのように対処すればいいですか?
0071デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.AN根本的に設計が汚い。
この際だから依存関係逆転ぐらい覚えよう。
要するにイベントを使う
0072デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.ANint lineSpacingPixel = (int)Math.Round(font.GetHeight(g),0);
for (int i = 1; i <= lastLine + 1; i++)
{
g.DrawLine(p,
new Point(myPictureBox.Width - 5, (int)(lineSpacingPixel * (i + 1))),
new Point(myPictureBox.Width, (int)(lineSpacingPixel * (i + 1)))
);
}
これをフォントと重ね合わせると基本的にはうまくいくんですが、
フォントによっては改行するごとにズレが生じる事があります
行間を取得する方法として何かまずいんでしょうか
0073デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.ANInvokeする前にIsHandleCreatedやIsDisposedプロパティでハンドルが生きてるか確かめる
0074デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.AN0075デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.ANcatch
で握り潰せばいいと思う
0076デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.AN0077デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.AN握りつぶしていい処理ならそもそもやらんでいいかも知れんぞ
0078デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.AN007970 忍法帖【Lv=2,xxxP】(3+0:5)
2013/07/04(木) NY:AN:NY.ANWebBrowserクラスのDisposedイベントでスレッドが動いてたらAbortすれば動くようになりました
>>77
外部クラスのログをFormのテキストボックスに表示させたかったんです
0080デフォルトの名無しさん
2013/07/04(木) NY:AN:NY.AN0081デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.AN0082デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.AN0083デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.AN0084デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.AN次の項目のどれが、どの順で実行されますか?
A Exitを呼んだスレッドで作られたControlとHandleの破棄
B ほかのスレッドで作られたControlとHandleの破棄
C Exitを読んだスレッドのApplication.Runから抜ける
D ほかのスレッドのApplication.Runから抜ける
>>70ではないのですが、BeginInvokeするためだけに作った
Controlが、終了処理中、HandleDestroyedが呼ばれることなく
いつの間にか死んでます。
0085デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.AN0086デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.ANハンドル破棄やApplication.Run終了もやってくれるという
認識でいいですか?
0087デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.AN0088デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.AN0089デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.ANKinect独自の画面認証や体のジョイント認証と混同して
単純な四角形の描画やdelay関数を用いることは出きるのでしょうか??
0090デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.AN> Windows上ならExcel扱えない言語のほうが珍しい
そう、C からでも使える。
0091デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.ANマルチGUIスレッド自体がグレーだよ
不定の意味分かる?
リンクをクリックした場合も、自前のメソッドでDocumentTextにソースを流し込むようにしたいのですが、
クリックされたリンクを取得して自前のメソッドに投げることはできたのですが、
webBrowser自体の?でリンクをクリックしたときに自動でページ移動するみたいです
Navigatingイベントを見てみましたが、これをどこで潰せばいいのかわかりません
どうにかヒントだけでもください。お願いします
0093デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.AN0094デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.AN0095デフォルトの名無しさん
2013/07/05(金) NY:AN:NY.ANあればそれでキャンセルできる
なけりゃWebBrowserじゃなくてSHDocVwかなんかから引っ張ってきたらいい
0096デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.ANそこで画像の表示なのですが、どのように表示させるのがセオリーというか、ベターなのでしょうか?
今はpictureboxを複数重ねて同じ位置に配置し、透過して表示させています(背景、キャラなど)
しかし、これだと後々キャラが動くモーションなどを組む時に困る気がしてきまして・・・
0097デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.AN0098デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.ANノベルゲー的なナニカを作りたいんです
0099デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.ANとりあえず静止画のみで作ったら?
0100デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.AN0101デフォルトの名無しさん
2013/07/07(日) NY:AN:NY.AN■ このスレッドは過去ログ倉庫に格納されています