トップページ⇒tech
1001コメント310KB

ふらっとC#,C♯,C#(初心者用) Part67

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん2010/12/16(木) 18:23:33
このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からない場合など、勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。

なお、テンプレ2行目が読めない回答者は邪魔なので後述のC#相談室に移動して下さい。

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっとC#,C♯,C#(初心者用) Part66
http://hibari.2ch.net/test/read.cgi/tech/1290854247/

■関連スレ
C#, C♯, C#相談室 Part63
http://hibari.2ch.net/test/read.cgi/tech/1289733048/
VB.NET質問スレ(Part35)
http://hibari.2ch.net/test/read.cgi/tech/1284423653/
くだすれC++/CLI(初心者用)part2
http://pc12.2ch.net/test/read.cgi/tech/1268613679/

■備考
コードの量が多い場合は下記サイトを使うなどしたほうがいいかも
http://ideone.com/
コードを貼り付けてRun codeのチェックをはずしてsubmitボタンを押すと
コードを鯖側にアップして専用のアドレスが発行されます。

直接貼る場合は下記サイトなどを利用してhtmlエンコードした方が
インデントも残って見やすいです
http://kawama.jp/php/encode_html.php
0893デフォルトの名無しさん2011/01/11(火) 15:56:44
>>892ゼロからはじめるプログラミング 第2版
0894デフォルトの名無しさん2011/01/11(火) 15:58:51
>>893
専ブラでも作ったらどうだ?
C#をそこそこ使うから勉強になるぞ
0895デフォルトの名無しさん2011/01/11(火) 16:14:23
>>886-888
ありがとう。やっとわかったようなきがする。
0896デフォルトの名無しさん2011/01/11(火) 16:31:51
>>893
最終的に何作りたいかによるけど・・・

業務的に使いたいならデータ保存にDBとかXML使った名簿管理とかどう?
データの取り出し、追加更新削除や入力チェックとか
最低限業務で使用する機能が入ってる。

0897デフォルトの名無しさん2011/01/11(火) 17:18:18
C#, C♯, C#相談室 Part64
のスレ立てれんかった

テンプレのリンクとか全部書きなおしたのに・・・
立てれる人いるならテンプレどっかにアップするよ。
0898デフォルトの名無しさん2011/01/11(火) 17:24:37
>>897
じゃあ立てたんでテンプレよろしく
http://hibari.2ch.net/test/read.cgi/tech/1294734221/
0899デフォルトの名無しさん2011/01/11(火) 17:30:08
>>898
ありがとう任務完了しました(`・ω・´)ゞ
0900デフォルトの名無しさん2011/01/11(火) 17:58:51
乙
0901デフォルトの名無しさん2011/01/11(火) 19:20:00
ドボンのTips見ながら、2つのForm間の値の受け渡しでつまづいてます。
Form1のpublicな変数の値を、モーダルで開いたForm2のコンボボックスのTextプロパティに渡したいのですが、
コンボボックスのDropDownStyleをDropDownListにしてると出来ません。
コンボボックスの上部をユーザーがエディットできない状態にしつつ、
Form1の変数を渡すことは出来ませんか?
よくある、コンボボックスを開いてデバイスを選択して、環境変数を変更するダイアログが作りたいのですが。
0902デフォルトの名無しさん2011/01/11(火) 19:24:51
まずはリファレンスを読むんだ
0903デフォルトの名無しさん2011/01/11(火) 19:34:59
MSDNは見てるんですけどね。
コンボボックスのプロパティの問題なのか、
フォームの開き方なのか、インスタンスの作り方なのか・・・
何処が原因なのか、まだよく分からないので、ヒント教えてください。
0904デフォルトの名無しさん2011/01/11(火) 19:36:30
一気に大ジャンプしてMVVMでも
0905デフォルトの名無しさん2011/01/11(火) 19:38:07
できません、じゃなくコード書け
0906デフォルトの名無しさん2011/01/11(火) 19:38:15
items.add
items.index
この二つを使うだけじゃね?
0907デフォルトの名無しさん2011/01/11(火) 19:59:13
コードってこんなんでいいですか?Form1が、
public string x = "name";
private void 環境設定ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.ShowDialog(this);
if (f2.DialogResult == DialogResult.OK)
処理;
f2.Dispose();
}
Form2が
private void Form2_Load(object sender, EventArgs e)
{
comboBox1.Text = ((Form1)this.Owner).x;
}

comboBox1のitemsを作るところはもう出来てるんです。
ただ、環境設定ですからまず現状を表示しないといけないので、
Form1の現状をForm2コンボボックスの上部に表示させたいのですが、(以下>>901)
0908デフォルトの名無しさん2011/01/11(火) 20:18:46
>>907
それForm2とか関係ないじゃん
DropDownListスタイルだったらTextになにを設定しても表示されない
0909デフォルトの名無しさん2011/01/11(火) 20:22:55
そうなんですか?
Listからせ託したものは表示されるけど、外部からプロパティでは触れないと?
うーん、じゃあ単に表示じゃなくて、Listの中から検索して表示にしないと駄目なのかな。
0910デフォルトの名無しさん2011/01/11(火) 20:24:44
せ託 → 選択
0911デフォルトの名無しさん2011/01/11(火) 21:06:30
>>907
そのコードをコピペしてやってみたら俺のは表示された
俺も初心者だから何が原因か分からないけど俺のソース貼ってみる。

↓↓↓form1
public string x = "ヤッホー";

private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.ShowDialog(this);
if (f2.DialogResult == DialogResult.OK)
{
}
f2.Dispose();
}

↓↓↓form2
private void Form2_Load(object sender, EventArgs e)
{
comboBox1.Text = ((Form1)this.Owner).x;
}

Form2のドロップダウンする前のコンボボックス「ヤッホー」と表示される
0912デフォルトの名無しさん2011/01/11(火) 21:25:54
だから
>コンボボックスのDropDownStyleをDropDownListにしてると出来ません。
って書いてあるじゃん
0913デフォルトの名無しさん2011/01/11(火) 21:41:16
その通りだった
DropDownListにしてなかった すいません
0914デフォルトの名無しさん2011/01/11(火) 22:32:00
>>913
うむ。許してやる。
0915デフォルトの名無しさん2011/01/11(火) 22:37:38
何お前?ありがとうございます
0916デフォルトの名無しさん2011/01/11(火) 22:46:47
どういたしまして。カス
0917デフォルトの名無しさん2011/01/12(水) 00:07:35
ゴミ同士なかよくしろよ
0918デフォルトの名無しさん2011/01/12(水) 09:28:59
ヘルプにヘルプが必要な時もあるけど
最低限読んどけよなカス
0919デフォルトの名無しさん2011/01/12(水) 09:40:42
>>1
0920デフォルトの名無しさん2011/01/12(水) 10:18:54
C#から携帯電話の電話番号をプッシュするようなソフト
(サードパーティツールは使用不可能)て作成できませんか?
要は、プログラム内のボタンをクリックしたタイミングで接続している携帯で電話をかけられればいいのですが

今のところドコモのFOMA限定で考えています(ガラケーのほう)
WindowsPhoneならいけそうですが、そうもいかないっぽいので

PCとFOMAの接続は純正のUSB→FOMAの充電部接続するケーブルを考えています。

絶対に無理とか何らかの情報で構わないのでお願いします。


0921デフォルトの名無しさん2011/01/12(水) 10:33:27
>>920
たぶん無理だと思います。
0922デフォルトの名無しさん2011/01/12(水) 10:36:17
>>920
物理的にボタンを押す装置を作ればok
0923デフォルトの名無しさん2011/01/12(水) 10:50:36
携帯電話をモデムとしてダイヤルするとどーなるんだろ?
0924デフォルトの名無しさん2011/01/12(水) 10:51:35
レスありがとうございます。

>携帯電話をモデムとして
これが出来ればATコマンドでいけるんですが・・・

>>922
それは難しいです
0925デフォルトの名無しさん2011/01/12(水) 11:10:22
http://www.nttdocomo.co.jp/corporate/technology/document/foma/
0926デフォルトの名無しさん2011/01/12(水) 12:06:25
>>925
ありがとうございます!!
こんな資料があるとは・・・・

USBハンズフリーあたりの情報からいけそうな気がしてきました。

レスくださった皆様ありがとうございました!
0927デフォルトの名無しさん2011/01/12(水) 12:09:49
>>922のいう装置はやねうらお氏が自作してたな
ボタン部分をひっぺがしてショートさせるやつだけど

>>925のような資料を元に一昔前はPCで携帯電話の
メモリー管理をするケーブルとかソフト売ってた記憶があるけど
ああいうのってもうないのかね?

あれだと確かドライバー入れればソフトは自分でも作れたような記憶が・・・
というかケーブルとドライバーさえなんとかなればFOMAだろうが単なるモデムにみえるよね?
0928デフォルトの名無しさん2011/01/12(水) 12:53:01
>>927
ショートさせるのは強引すぎますねぇ(^^;
とりあえずモデムに見えるのを期待してドライバとか入れてみます。
0929デフォルトの名無しさん2011/01/12(水) 12:59:10
今でも一応作ってるんだな
http://www.reudo.co.jp/crystal/index.html
09309202011/01/12(水) 13:04:51
おかげさまでモデムとして認識してくれました。

これでリファレンスにのっとってATコマンドで制御できそうな感じです。

ttp://www.uproda.net/down/uproda192356.png.html

0931デフォルトの名無しさん2011/01/12(水) 13:06:30
あるプロセスがネットワークに接続しているかどうかを確認する関数ってありますか?
ググってもPC自体がが接続しているかどうかのチェック方法しかでてこなくて・・・
0932デフォルトの名無しさん2011/01/12(水) 13:18:58
NetStatの結果を取得してきたりとか駄目?
0933デフォルトの名無しさん2011/01/12(水) 13:26:19
ネットワークにアクセスするときもあるけど確認したときはたまたまコネクション張ってなかった
って場合は接続していないで良いの?
0934デフォルトの名無しさん2011/01/12(水) 18:52:14
ぶひひ
0935デフォルトの名無しさん2011/01/12(水) 21:15:05
c# 初心者です。
アプリケーションを実行中にもう一つウィンドウを出したいのですが、


namespace FromTestAppli
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Form1 f = new Form1();
f.Show();
System.Threading.Thread.Sleep(5000);
f.Close();
}
}
}

というコードでウィンドウを作ったところ、作ったウィンドウが真っ白で応答なしになってしまいます。
f.Show()ではなくてf.ShowDialog()を使えば真っ白にならないのですが、1枚目のウィンドウも同時に使いたいです。
どういうコードを書けば期待した動作をしてくれますか。
0936デフォルトの名無しさん2011/01/12(水) 21:16:44
GUIスレッドでSleepは厳禁
待つならSystem.Windows.Forms.Timerでも使えばいい
0937デフォルトの名無しさん2011/01/12(水) 21:17:15
>>935
自分の複製をもう一枚表示するの?
0938デフォルトの名無しさん2011/01/12(水) 21:26:31
>>936
的確なアドバイスありがとうございました。

>>937
実際に作りたいものは少し違うのですが、大筋ではこのようなことがやりたかったのです。。

0939デフォルトの名無しさん2011/01/12(水) 21:30:12
もしかしてスプラッシュウインドウをやりたいとか・・・?
0940デフォルトの名無しさん2011/01/12(水) 22:03:33
こちらで質問していいものか分からなかったのですがこちらで2点質問させてください。

現在、ASP.NETで開発をおこなっておりそこにlog4netを導入しました。
設置環境としてはWindowsserver20008R2で
社内環境や客先で基本的には上手く動いているのですが
級ににログが出力されなくなったりすることがあります。

何かIISの設定やWebConfig等に気をつけることとかありますでしょうか?

続いて2点目なのですが、WebからClickOnceを起動するときに
401エラーが発生してしまいます。IISの設定はWindows統合認証に
設定しており、これは自社では動き、客先でエラーになっている
状態です。

分かりにくいかと思いますが、どうぞよろしくお願い致します。
0941デフォルトの名無しさん2011/01/12(水) 22:53:17
前半
ログが出力されなくなる直前のログを確認しろよ

後半
ログ見ろよ
09429312011/01/12(水) 23:21:29
>>932
netstatで確認出来ることは知っていたのですが、それをどうやって持ってくるのかが分かりませんでした
調べたところAPIのGetExtendedTcpTableなどで出来るみたいですね
ありがとうございました
0943デフォルトの名無しさん2011/01/13(木) 09:07:09
>>942
んナめんどくさいことしなくても
こんなんじゃだめ?


using System.Text;
using System.Diagnostics;
using System.IO;

Process p = new Process();
StreamReader sr;
ProcessStartInfo startInfo = new ProcessStartInfo("netstat");
startInfo.Arguments = "-a";
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
startInfo.CreateNoWindow = true;
p.StartInfo = startInfo;
p.Start();
sr = p.StandardOutput;

あとはsrをお好きに
usingかいてねぇやw
0944デフォルトの名無しさん2011/01/13(木) 10:20:32
StreamReaderのReadLine()を何回か呼び出したあとに読みこんだバイト数を調べる方法を教えてください
0945デフォルトの名無しさん2011/01/13(木) 10:44:57
StreamReaderを初期化するときに使ったStreamのPositionの差分を調べる
ただし、StreamがCanSeekを支援している必要がある
0946デフォルトの名無しさん2011/01/13(木) 10:56:42
テキスト形式のファイルを読むパーサー作ったんですが
入れ子構造になった構造体をtreeviewに展開するのにすごく時間がかかります、

全部のノードで2万程なんですが、どうしたら素早く表示できるでしょうか
現状Core2 Duo 1.4GHzで30秒くらいかかります
0947デフォルトの名無しさん2011/01/13(木) 10:58:59
treeviewをなんとかモードにするとか?
0948デフォルトの名無しさん2011/01/13(木) 11:51:32
俺の作ったのはフォルダーツリーだが、最初のノードMouseEnterが来て、初めて子ノードを生成するようにした
0949デフォルトの名無しさん2011/01/13(木) 11:55:45
マルチスレッドにするといいよ
0950デフォルトの名無しさん2011/01/13(木) 12:04:45
普通に親だけ作っといて(子があるかどうかだけ判定しておく)
子ノードのクリックはしったら別スレッドで取得する

Windowsのエクスプローラのツリーがそんな感じでしょ?
0951デフォルトの名無しさん2011/01/13(木) 12:14:44
TreeViewにVirtualModeはないのか
じゃあ>>948のようなトップノードを最初に追加して必要に応じて部分的にノードを追加するしかないな

この辺が参考になるかと
http://www.atmarkit.co.jp/fdotnet/dotnettips/260createtreeview/createtreeview.html
0952デフォルトの名無しさん2011/01/13(木) 12:16:51
保持できるんなら取りあえずメモリに保持って
>>951でやれば結構楽と思うよ

メモリの容量によると思うけど
0953デフォルトの名無しさん2011/01/13(木) 12:48:00
ツリーに表示する時が遅いだけだから一度に全部展開しなければ済む話。
0954デフォルトの名無しさん2011/01/13(木) 13:56:16
どういう風に質問したらいいのかわかりませんが、
回転中心の座標を移動させることは出来るのでしょうか?
0955デフォルトの名無しさん2011/01/13(木) 13:59:47
XNAのことかー
0956デフォルトの名無しさん2011/01/13(木) 14:00:37
wpfです。
0957デフォルトの名無しさん2011/01/13(木) 14:00:54
>>954
なにを言っているか判りませんが
何とかすれば可能でしょうね
09589542011/01/13(木) 14:08:49
うーん
回転する物体を平行移動しているのですが、
どうも平行移動する際に、回転の角度がおかしくなってしまうので、
回転中心が移動されてなく、固定されているんじゃないかなと思ったのです。

ですので、物体の平行移動と同じように回転中心を移動できれば改善されるかなと思ったのです。
0959デフォルトの名無しさん2011/01/13(木) 14:11:00
最近だとクォータニオンがあれば回転軸がどこにあろうがちゃんとまわせなかったっけ?
0960デフォルトの名無しさん2011/01/13(木) 14:11:17
だからまず回転する物体とはなんなのか説明してよ
Managed DirectXの話?
0961デフォルトの名無しさん2011/01/13(木) 14:14:31
エスパーすると、回転と平行移動の順番の問題だと思う
09629542011/01/13(木) 14:15:54
>>959
クォータニオンで回転させているのですが、物体を移動させないときはきちんと回転させれるのですが、
移動すると平行移動しかしてないにも関わらず、変な方向にぶっ飛んでいきます

>>960
>だからまず回転する物体とはなんなのか説明してよ
すみません、何を聞かれているのかがわかりません。
WPF,C#,Direct3Dでしょうか
0963デフォルトの名無しさん2011/01/13(木) 14:16:05
数学は得意じゃないけど矩形などで中心以外の場所に回転軸を設けて回すのであれば
一旦ポリゴンを分割して回せばいいだけなんだけどな
0964デフォルトの名無しさん2011/01/13(木) 14:17:29
>>962
与え方が悪いだけのような
その場所付近のコードは晒せる?
09659542011/01/13(木) 14:17:47
>>961
今は平行移動->回転の順番で記述してます。
0966デフォルトの名無しさん2011/01/13(木) 14:18:33
>>965
逆にしてみ
09679542011/01/13(木) 14:22:43
>>963 >>960
理解しました。物体は振り子のようなものです。

>>964
  degree = parameter[2]

Quaternion xz = new Quaternion(new Vector3D(0, 0, 1), degree);

 Aa.OffsetX = parameter.z[0];
Aa.Rotate(xz);
0968デフォルトの名無しさん2011/01/13(木) 14:25:24
アフィン変換で拡大縮小平行移動回転するときは
拡大縮小回転の中心が原点にくるように平行移動 -> 拡大縮小 -> 回転 -> 目的の位置へ平行移動
の順で変換する
09699542011/01/13(木) 14:26:03
>>966

やってみましたが、変わりませんでした・・・
09709542011/01/13(木) 14:37:40
>>968
>拡大縮小回転の中心が原点にくるように平行移動
これがよくわかりませんでした。
0971デフォルトの名無しさん2011/01/13(木) 14:40:46
どっかやり方がおかしいんだろ
WPFはクォータニオンなんか直接触らなくても回転できる。わかんないなら難しいことしなくていい。
var rotation = new RotateTransform3D(new AxisAngleRotation3D(0,0,1), degree);
var translation = new TranslateTransform3D(平行移動のベクトル);
var transform = new Transform3DGroup();
transform.Children.Add(rotation);
transform.Children.Add(translation);
このtransformを適用するだけ
0972デフォルトの名無しさん2011/01/13(木) 14:52:58
>>971
やってみます。
0973デフォルトの名無しさん2011/01/13(木) 15:01:36
座標変換だかワールド変換だかを説明しなければいけない
とおもったけどTransform3DGroup.Childrenが全部やってくれるのなら
それでいいのかも
09749542011/01/13(木) 15:15:55
>>971
できましたー!
30時間くらい悩んだのに\(^o^)/

助かりました。精進します!
0975デフォルトの名無しさん2011/01/13(木) 15:20:38
http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Components-PostAttachments/00-00-68-11-29/teapot.xaml
0976デフォルトの名無しさん2011/01/13(木) 15:20:42
C#でSQLiteを使ってるんですけど、
テーブル定義で、
command.CommandText = "create table Id_Name (id char NOT NULL primary key, name char)";
と、Id_Nameというテーブルを定義しました。
これでidは重複する文字は登録できなくなったのですが、
書き込むときに、
idが重複した場合エラーを
Messagebox.Showで表示したいんですが
判定条件?はどうしたらいいですか?

それから、NOT NULLにしてるので
文字が書き込まれなかった場合も
上記同様にしたいのですが
どうしたらいいですか?

参考ページなどでもいいのでお願いします!
0977デフォルトの名無しさん2011/01/13(木) 15:22:41
例外をキャッチするだけだろjk
0978デフォルトの名無しさん2011/01/13(木) 15:23:04
insert する前にselectする
0979デフォルトの名無しさん2011/01/13(木) 15:23:59
>>978
(;´д`)
0980デフォルトの名無しさん2011/01/13(木) 15:24:16
>>976
try
{
//処理
}
catch
{
//エラー処理
}
こんな感じかな
0981デフォルトの名無しさん2011/01/13(木) 15:25:10
2chブラウザの作り方教えろ
0982デフォルトの名無しさん2011/01/13(木) 15:31:47
WPFでPMDって読み込める?
0983デフォルトの名無しさん2011/01/13(木) 15:32:14
やっぱりtrycatchでないとできないですかね・・・;
他に何かあればと思ったんですが・・・
0984デフォルトの名無しさん2011/01/13(木) 15:33:09
>>978
やってみます!
0985デフォルトの名無しさん2011/01/13(木) 15:36:46
単体で動かして、量がそこまで多くないなら一覧読み込んで水際でキャッチかな?
俺は基本的に例外はかせたくないタイプ
例外は本当に例外の時だけ 捕まえれるものは捕まえたい
0986デフォルトの名無しさん2011/01/13(木) 15:42:25
>>981
順番にやっていけ
http://cs2ch.blog123.fc2.com/blog-entry-1.html
0987デフォルトの名無しさん2011/01/13(木) 15:50:26
>>983
C/C++時代のようにリターンコードを見るって感じじゃないみたいね
一応try catchもcatch側で細かいエラータイプをみれるようだけど
0988デフォルトの名無しさん2011/01/13(木) 15:59:29
try{
command.CommandText = "create table Id_Name (id char NOT NULL primary key, name char)";
command.ExecuteNonQuery();
}
catch(Exception)
{
MessageBox.Show("NOT NULL or primary key ERROR!!");
return;
}

これでエラーを出すことが出来ました。
>>985さん同様例外はかせたくないのですが
データ量がこれから多くなります・・・
水際でキャッチというのもよくわからなかったので><
0989デフォルトの名無しさん2011/01/13(木) 16:00:58
>>988です!
catch(Exception)
になっているんですけど
Exception以外のほうがいいんですかね??
0990デフォルトの名無しさん2011/01/13(木) 16:04:20
もし、UnhandledExceptionとか受け取ってるなら
CatchはDuplicationExceptionとか、重複した時に(に限らず想定できるもの)起こりうるような例外だけにして、
それ以外の物はキャッチするなり、しないなりしてリソースとかを適切に処理した後、
再度スローして任せるようにしたりするのはどう?
09919902011/01/13(木) 16:05:06
>もし、UnhandledExceptionとか受け取ってるなら
これ
もし、UnhandledExceptionとかで捕捉してるなら
の間違い
0992デフォルトの名無しさん2011/01/13(木) 16:10:21
>>991
このtrycatchの外でも
違う場所で例外が出る可能性があるので
trycatchしています。
それもExceptionになってます。
trycatchが二重になっているといえばわかるでしょうか?


DuplicationExceptionとは、初めて聞きました。
ネットで調べてみたのですが
よくわかりません・・・
catch(DuplicationException)としてみると
usingディレクトリまたはアセンブリ参照が不足しています
と出てしまいます。
何をusingすればいいですか???
レス数が950を超えています。1000を超えると書き込みができなくなります。