このスレッドは
「どんなにくだらないC#プログラミングに関する発言でも誰かが優しくレスをしてくれるスレッド」です。
ほかのスレッドでは恐ろしくて書き込めないような低レベル、もしくは質問者自身なんだか意味がよく分からない質問など、
勇気をもって書き込んでください。
内容に応じて、他スレ・他板へ行くことを勧められる、あるいは誘導される場合がありますがご了承下さい。
11 名前:デフォルトの名無しさん[sage] 投稿日:2007/01/18(木) 19:19:37
質問するときに
〜したいのですが、上手くいきません。
〜したときにエラーが出ます。
という書き方はイクナイ。
何も書いてないのと同じ☆
〜したいのですが、〜で〜が失敗します。
〜したときに〜エラーが出ます。
隠さずくわしくかきましょう
取り合えず前スレの問題は全て解決したのか?
そんなわけない。
900以降みてみたが、一応どれも終わってるみたいだ
終わってない人は再掲したほうがいいかも
おわってねぇーw
>982
単なる書き換えわすれだよ。
確かにねたぽいけど、ちゃんと理由があるのであんまりつっつかないでくれ。
>979
えーと、単純なクラスのバインディングなら出来てるっていうのを書き忘れた。
問題は IEnumerable を実装してるクラスの場合で、単純なクラスの場合と同じに
書いてもリストオブジェクト自体のプロパティのバインディングが出来ないです。
再掲?
がちょーんって言ってた人?
おれ、りろーど汁。
えーと質問です。
class hoge {}
class hogelist : List<hoge> {
public String Value { get() { return ""; } }
}
private readonly hogelist hogelist = new hogelist();
public form1(.......) // こんすとらくた
{
InitializeComponent();
textBox1.DataBinding.Add("Text", hogelist, "Value"); // 質問修正
}
というコードを書いて、外部のフォームからこのフォームを表示させようとすると
form1->Show(); // ここで例外。
ArgumentExceptionはハンドルされませんでした。
DataSource のプロパティまたは列Valueにバインドできません。
パラメータ名:dataMember
と言われて、データバインディングに失敗します。
Show() のところから、ステップ実行すると IEnumerable.GetEnumerator() が呼ばれて
いて、これは素直に通過するのだけど通過した後の外部コードの中で例外が発生します。
どうすればデータバインディングできるのでしょうか?
アロー演算子
974 名前:デフォルトの名無しさん[sage] 投稿日:2007/02/06(火) 19:38:03
>form1->Show()
ネタですね…
>IList を実装し、オブジェクトのインデックス付きコレクションを作成する任意のクラス。
>このコレクションは、Binding を作成する前に作成され、その中にオブジェクトが
>格納されていることが必要です。リスト内のオブジェクトの型は、
>すべて同じである必要があります。それ以外の場合は、例外がスローされます。
tigaudro
おぉ。form1.Show() に読み替えてください。
まぁ別フォームのコードは C++/CLI だから、
元のソースそのまんまではあるわけだけど。
よくきがつくなー。
まだおかしい
get()…
DataBinding
>>13 DataBindingsにIEnumerableでないオブジェクトが使えるのがオマケみたいなものだから、
仕様だと思ってあきらめよう。
これだと通る。
class hoge { public String Value { get() { return ""; } }
class hogelist : List<hoge> { }
了解。ありがとう。
#くだすれ.NET Frameworkってスレありません?
本来は.NET Framework関係の話題はVB.NETやC#もなく統合スレでやるべきなんだろうけどな
C#覚えればいいのに。C++/CLIが使えるなら簡単でしょ?
転がってる情報はほとんどVB.NETとC#だし
++厨もこっちくんのか・・・
絶対++なら出来るだのなんだの文句ばっかりだろうな・・・
26 :
24:2007/02/06(火) 22:35:59
理解した。
プロパティ名""にすると、ToString()が帰ってくるらしい。
textBox1.DataBindings.Add("Text", hogelist, "");
これで帰ってきたもの見ると、
WindowsApplication1.hoge となっていた。
hogelistはデータセットでhogeが行扱いみたいだな。
両方出来るけど、一つのソリューションの中にC++/CLIとC#のプロジェクトが
混じってると、ソース書くときもまじるんだよね。
.NETスレあったろ
29 :
24:2007/02/06(火) 22:50:16
こういうの作って楽しんだ…
private void button2_Click(object sender, EventArgs e)
{
textBox1.DataBindings["Text"].BindingManagerBase.Position++;
}
public hoge(string st){
innerString=st;
}
シングルスレッドでも、多重で関数が起動される件
原因はUnLha32.dllの中でメッセージループをまわるようにしているようです。
スイッチ指定で回さないようにしたら、ちゃんと予定した動作をしました。
ふう〜
なんでTIMER.TICKイベントのなかで
MessageBox.Showをやるとその後のコードが
実行されないんでしょうか?
>>32 TIMER.TICK なんて無いと釣られてみる
それはさておき、MessageBox はモーダルウィンドウなので。
嫌なら自分でフォーム書くとか。
Windows フォームのタイマ コンポーネントはシングルスレッドで、精度の上限は 55 ミリ秒
になります。より精度の高いマルチスレッド タイマが必要な場合は、System.Timers 名前
空間の Timer クラスを使用してください。
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.ja/CPref17/html/T_System_Windows_Forms_Timer.htm
>>33 なんでモーダルウィンドウだとそうなるんですか?
なんでって用途を考えろよ
わかんねーから聞いてるんですけど
質問スレで「考えろ」って回答はありえないんですけど
典型的なゆとりだな。
わかり易く説明してくれよ
初心者なんだからさ
マルチスレッドとか意味わかんね
ツールボックスにあるTIMERじゃだめなわけ?
42 :
ぴゅあ:2007/02/07(水) 10:07:46
43 :
デフォルトの名無しさん:2007/02/07(水) 10:54:58
スレッドと使うかタイマを使うかは用途によるな
軽いくて止まらない処理ならタイマー使えば良いし
タイマーの誤差範囲より長い時間で正確な時間取りたいのなら
タイマーの中で更に正確な時間読み出して使えば良い
ただ、良く分からないで初心者がいきなりガンダムを操縦するのは無理だな
>>42 なんだって?
>>43 そういうことじゃなくて
messageshowやるとその後のコードが実行されないってことを
言ってるわけ
>>44 OKボタンをクリックすれば続きが実行されるよo(^−^)o
>軽いくて”止まらない”
つまり止まるって事は、何らかの関数を呼んだら
あるイベントが発生するまで待ち状態になり、その関数から返って来ない事を指す
そんなもんはタイマーじゃ使っちゃいけないって事
48 :
デフォルトの名無しさん:2007/02/07(水) 13:22:59
Listview(Detail表示)で選択された行の情報を何らかの形で取得したいのですが、
一般的にはどのように行うものなのでしょうか?
何を求めているのかよくわかんない。
foreach( ListViewItem item in listView1.SelectedItems )
{
...
}
50 :
デフォルトの名無しさん:2007/02/07(水) 13:37:55
1 ぬるぽ A
2 ぬるぽ B
3 ぬるぽ C
こんな感じに並んでいて、2の行がダブルクリックされた際に
「2」でも「ぬるぽ」でも「B」でもいいのでこのクリックされた行に関する情報を得たいです。
private void listView1_ItemActivate( object sender, EventArgs e )
{
if( this.listView1.SelectedItems.Count > 0 )
{
ListViewItem item = this.listView1.SelectedItems[0];
string str = "";
for( int i = 0; i < item.SubItems.Count; i++ )
{
str += item.SubItems[i].Text + ", ";
}
MessageBox.Show( str );
}
}
52 :
デフォルトの名無しさん:2007/02/07(水) 13:58:54
>>51 うまくいきました。
お手数おかけしました。
どうもありがとうございます。
BinaryReaderでfloat値をバイナリファイルから取り出す場合、どうすればいいの?
標準でReadFloatが入ってないのも不思議だが・・・
ReadSingleてないの?
>>54 d
それでいけました。
ReadFloatって名前じゃなかったのね。
テキストファイルを途中から読み込む方法教えてください。
○○行目から読み込む、
又は
○○の文字列の後から読み込むなど。
よろしくお願いします
ない。
考えれば分かると思うが…
普通に読み込んでいらない行を捨てていくだけ。
ないんですか・・・
IndexOfで指定の文字列検索して、そのあとから読む
って出来るかと思ったのですが。。
すみません、超初心者の発想でした
行削除でやってみます。
検索するにしても一旦読みこんどかないといけないわけで
>>61 一旦ReadToEndで読み込んで、IndexOfで文字列検索して・・・
の後どうすれば?
その後何がしたいかによる
ReadLineで一行ずつチェックしていったほうがいい気はする
>>63 テキストファイルの中身は(int,int,string)のデータが
1行につき1つずつ入ってます。
そのテキストファイルを一行ずつ読み込んで、
構造体配列に格納していきたいんですけど、
最初の7行はいらないんです。8行目から処理したいんですが。
ReadLine で読み捨てが一番楽だろ
ここって答えてる奴も初心者なんだな
textreaderも知らないのかよ・・・
読み込むポインタを指定すれば途中から読み込める
で、そのポインタをどうやって見つけるんだい
>>67 TextReaderはそのポインタとやらを進める方法は読み捨てしかないんだが
>>67 煽ってるやつも初心者だから救いようがない
逃げちゃった?
まぁ恥をかくのも勉強
恥かかないように一生懸命調べなされ
どれに言ってるのやら
74 :
デフォルトの名無しさん:2007/02/08(木) 01:11:47
midi音源を用いてキーで入力された音を出したいのですが・・・・
資料がなくて困っています・・・・
winmm.dllを用いたソースを入手したのですが、
如何せん「仕様書」のようなものがないもので・・・・
76 :
デフォルトの名無しさん:2007/02/08(木) 01:25:05
>>75 あーあるんですねー
英語だからって敬遠して探してませんでした。
読んでみます。どうもです。
77 :
デフォルトの名無しさん:2007/02/08(木) 02:05:28
まんまじゃん
>>77 ちょっと定義がいい加減だなあ。動くんだろうけど
80 :
デフォルトの名無しさん:2007/02/08(木) 02:15:32
>>77のソースだけで音出るんでしょうか?
Openしていろんなメソッドに変数渡してみてるんですが・・・・・
81 :
デフォルトの名無しさん:2007/02/08(木) 02:17:38
要はキー入力で指定されたものに対応するドラムの音だけ出したいんですが
見た感じだと音でると思うんだが、試してないの?
83 :
デフォルトの名無しさん:2007/02/08(木) 02:33:19
Formロード時にClose、offがつくもの以外のもの呼んでみてもならないみたいでした
渡した値が悪いのかな??
もしかして馬鹿?
戻り値見ればどこでどんなエラーがでてるか分かるんじゃない?
86 :
デフォルトの名無しさん:2007/02/08(木) 13:04:36
BackgroundWorkerについての質問です。
RunWorkerCompleted イベントはUIスレッドで実行されるみたいですが、
そっちのUIスレッドで何かのメソッドが実行中の場合ってどうなるんでしょうか。
実行中のメソッドが終了してからRunWorkerCompleted が実行されるんでしょうか。
またRunWorkerCompleted イベントの時点でフォームが閉じていた場合の
常套処理ってありますか?
form.IsHandleCreatedをみるだけでいいんでしょうか。
ひとつのスレッドが同時にできる処理の数はどうがんばってもひとつだけです。
Worker が生きてるときは Closing でキャンセルして、終了待機状態に。
Completed イベントで終了待機中なら閉じると処理してやる。
88 :
86:2007/02/08(木) 14:41:05
自己解決しますた。
>>88 (´・ω・`)
>>87 ありがとうございます。
するとRunWorkerCompleted イベント中の処理って
やっぱりUIスレッドがビジーの間は待たされるということですか
メッセージキューみたいなイメージでいいんですかね?
90 :
デフォルトの名無しさん :2007/02/08(木) 19:10:55
すいませんが教えてください。
最近C#を勉強しだしたんですが、継承もとのオブジェクトが継承先のオブジェクトに代入をなぜ出来る
のかが、わかりません。継承したクラスが継承したクラスの情報を持っているのはわかるんですが
継承されたクラスは継承したクラスの情報は持ってない、というか分からないと思うんですが。
以下のソースはいったい内部でどういう処理がおこなわれているんでしょうか、すいませんが教えてください。
using System;
public class TestClass1
{public virtual void show(){Console.WriteLine("TestClass1");}}
public class TestClass2 : TestClass1
{ public override void show(){Console.WriteLine("TestClass2");}}
class virtualmethodtest
{public static void Main(){
TestClass2 mc2 = new TestClass2();
TestClass1 mc1 = new TestClass1();
TestClass1 mct;
mct = mc1;
mct.show();
mct = mc2;//ここが分からないです。
mct.show();
}}
小さいもの?に大きいものが入ってるイメージがあるかもしれないが
実際はそんなものじゃないのです。
代入してもベースのオブジェクトのメモリに押し込まれるわけでありません。
拡張した部分が削られるわけではないのです。
Cやってたらわかるかも知れないけどmc1とかはポインタみたいなものです。
どこにオブジェクトの本体があるか指しているだけ。
だからサイズは気にする必要なし。
どちらかというと逆の大きいものに小さいもの入れるほうが問題がある。
なぜかというと拡張した部分に該当する箇所が無くデータが不足するものが
出る場合があるからから。
概念的にはベースクラスのほうが「大きい入れ物」だよ
「田中さん」を「人間」として扱うのと一緒
概念上はその通りかもしれないが。
オブジェクトのサイズから言うとベースのほうが大体小さい。
クロマニヨン人は我々現代人よりチンコがでかいってことだな
ここで生物学の時間です。
クロマニヨン人を我々人類の祖先と考えている人が多数おられますが、
そんな人たちは、高校で生物の授業をまともに受けてない人たちだと思います。
クロマニヨン人も北京原人もアウストラロピテクスもホモハビリスも
我々人類と血縁関係は「ありません」。というのが通説です。
生物進化の過程でさまざまな人類のパターンが地上に現れました。
クロマニヨン人と同時代に我々人類の祖先が既に存在していたと思われる
証拠が微々たるものではありますが北から西にかけてヨーロッパの各地で
見つかっております。決してクロマニヨン人から人類の祖先が誕生した
わけではありません。それぞれの時代の代表的な化石人類はすべて、
衰退して別の化石人類にバトンタッチをするわけですが、その時代と時代の境目が
「ミッシングリング」(見つからない世代のつながり)になっており、現在でも
よく分かっておりません。ただいえることは、ある世代にABCと三種の人類の
パターンが誕生して繁栄したのはAであったとすると、次の世代ではDEFの
パターンが現れ、それらはBCの子孫である可能性が高く、Aは子孫を残さなかった。
と考えられており、クロマニヨン人をはじめ著名な化石人類は全て子孫を残さず、
同世代の名も無き種が子孫を残し、それが我々の祖先であると考えられております。
通説ではアトランティス人が猿から人類を作り出したわけだが。
いやだから概念上はってわざわざいったんだろ。
高校じゃ物理と化学しかとってなかったんで
>>95 それ古い情報だよw
今はDNA解析も済んで、人間のルーツは解明してる
ネアンデルも北京原人も人間の直結の先祖じゃない
ばーか^^
人間の直結の先祖は俺
生 物 の 時 間 終 了
102 :
デフォルトの名無しさん:2007/02/09(金) 09:13:19
http://homepage3.nifty.com/midori_no_bike/CS/form.html#022 Form1.Designer.csというファイル名で保存
// Form を表示する
public class Form1
{
Form2 form2 = new Form2() ;
form2.Show() ;
}
public class Form2
{
/* Form1 と並行操作できる処理 */
}
しかし2エラー
エラー1名前空間にフィールドやメソッドのようなメンバを直接含めることはできません。C:\Documents and Settings\ta\My Documents\Visual Studio 2005\Projects\Project1\Project1\Form1.Designer.cs31Project1
エラー2クラス、デリゲート、列挙型、インターフェイス または構造体が必要です。C:\Documents and Settings\ta\My Documents\Visual Studio 2005\Projects\Project1\Project1\Form1.Designer.cs315Project1
using System;
using System.Drawing;
using System.Windows.Forms;
class Program
{
public static void Main()
{
Form f = new Form();
f.Width = 200;
f.Height = 200;
f.Text = "サンプルプログラム";
Application.Run(f);
}
}
調べた、こうやれば表示できるた
上のサイトはいったい何だったんだ
ヒント:略記
105 :
103:2007/02/09(金) 09:47:20
ヒントじゃなくて答え教えろカス
>>102は既存のフォームから別フォームを開くコードを
かなり省略して書いてある。
分かる人にはこんなサンプル必要ないし、
分からない人にはこれだけでは分からないからまったく意味のないサンプルコード。
答え:VisualC# ExpressEditionをインストールしろ
C♪
どうせならこういう名前にすればよかったのにな
なんかかわいいじゃん
C(#^ω^)
C(#^_^#)b
初心者とか書いてあるHPは、省略はするべきじゃないな。
初心者には、そのままコピペが多いし
∧∧
C(#゚Д゚)
⊂ つ
〜 |
し`J
C(# ゚д゚)
>>102 これひどいな
コメントが紛らわしいからこういう構文があるのかと思っちゃう
インターフェースでプロパティが定義されてるのってあまり見ないけどなんで?
馬鹿おっしゃい
ICollection.Count
IDictionary.Keys
IList.IsReadOnly
すんません
tabcontrolのtabpageをアクティブにするのって
Focus()で出来ないんですか?
おしえてくだだい
117 :
116:2007/02/09(金) 20:55:09
すみません。自己解決しますた。
試してみてできなかったんならできないんだろう。
TabControl.SelectedIndex/TabControl.SelectedTabでもつかっとけ
>>118 ありがとうございます。
VSで予測候補だしてくれますよね。
あれって全てでるんですか?(使用可な状態なら)
>>120 インテリセンスのことか?
普通に使う範囲では全部出ると思うよ。
>>121 TabControl.SelectedIndex/TabControl.SelectedTab
こんなの無かったとおもうんですけど・・
なにか動作させたいときってあのピンクの消しゴムみたいなのが
すっ飛んでるアイコンのコードを選ぶんですよね?
このスレって優しい人が多いですね
まぁなw
Ctrl+スペースな?
MD5CryptoServiceProviderクラスのComputHashメソッドでFileStreamのハッシュ値を計算中に進行状況を取得する方法を教えてください
普通に考えたらなさそうだけど…
無理。
>>129 ファイルを一旦byte配列に4kBずつ読んで、
TransformBlock(とTransformFinalBlock)に流し込むやりかたはどう?
そうですか…
別のクラスで出来そうなの探してみます
>>132 その方法を試してみます
連レスすみません
なんか本末転倒な予感
.NETのつぼ閉鎖したの?
ユーザーがメニューやキーボード操作をカスタマイズできる機能を
つけようと思うのですが、Delphi や C++Builder でいう、
TAction のようなクラスはないんでしょうか?
FORTRANのくだすれって親切だよな。
たまに放置もあるけど。
>>137 単にDictionary<ToolStripItem>に入れといてShortcutKeysプロパティをいじるのではダメなの?
>>138 ここは「C#」のスレそして「くだすれ」では無い
寂しがり屋さんは馴れ合い系に逝って下さい
C#とC++の違いを述べよ
まったくの別物
MS的には一応
C# : C++
ということにしたいらしい
144 :
デフォルトの名無しさん:2007/02/11(日) 18:05:31
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void 終了menu(object sender, EventArgs e)
{
this.Close();
}
}
終了menuのイベント追加したんだが
コピー、切り取り、貼り付けなどなど、
項目が増えるとソースが見づらくなると思うのだがスッキリする方法はないのだろうか?
Form1.Menu.csとかに分割していくのは?
>>145 VC#ってpartialに対応して無いでしょ?
デザインから飛べなくなるよ?
>>146 それがさ。ちょっとした裏技があって、csprojを弄って
<Compile Include="Form1.Menu.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
としておくと、デザイナがちゃんと補足してくれるんだよ
>>147 うはw知らんかった。
マジでありがとう
byte[] a = new byte[100];
とかしたとき、aは0で初期化されてたりする?
default(byte) 即ち 0 で初期化される。
>>147 俺も前それやりたかったけどわからなかった。
いい事聞いた。ありがとう。
ぶっちゃけ #region でいいとおもうんだけど
>>152 それじゃコミット時にチェックするのめんどくさくね?
>>152 MSクオリティっていうかユーザの意思と関係なく
なんかの拍子に勝手に開いたりするからいまひとつ使いづらいよな。
155 :
デフォルトの名無しさん:2007/02/11(日) 20:51:31
C#のインタプリタってある?
イミディエイトウィンドウでいいんじゃね
157 :
デフォルトの名無しさん:2007/02/11(日) 21:00:51
MSが辞めるって言ったら終わる言語?
それとも、Cとかみたいな感じ?
>>157 今M$が.NET辞めるって言ったら終わるんじゃね?w
一応は標準化されてるし、互換処理系も存在するが、
MSがやめるって言えば存在価値がなくなるな。
テキストフォームに漢字やひらがなを入力したとき、自動的にそのローマ字読みが別のフォームに格納されるようなあれ、どうやんのかな。
Cシャープ→csya-pu
のような感じで。
っ ImmGetConversionList
っ KAKASI, ChaSen
しゃ は sha なのか sya なのか
KeyUpを捕まえとくとか?
親指シフト使いの俺も忘れないでください
166 :
160:2007/02/11(日) 21:44:27
うーむ・・基本的には正しい変換とか気にせずに拾ってほしいからやっぱKeyUpなのかねぇ・・
BackSpaceとかDeleteとかどうすんだろ
車売るならKeyUp…
>>160 基本はimm32を叩く。
キー入力とるのは、クリップボードや範囲選択DELをうまく扱えないのであまり美味しくない。
かな使いの俺も忘れないでください
VistaならTSFを使うことになるんだろうな
171 :
160:2007/02/11(日) 22:08:04
>>168 やっぱそうかね。
キー入力も妖しいな。
妖しい
177 :
デフォルトの名無しさん:2007/02/12(月) 12:56:52
stringからStreamを作成する方法を教えてください
string のバイナリ化ってこと?
System.Text.Encoding に GetByte とかがあったと思う。
StringStream なんてのは無いな
Encoding.GetBytes で MemoryStream に書き込むのが基本か
StringBuilder とか StringReader / StringWriter とかで代用できる用途かも知れない
Stringとstringの違いを述べよ
ツマンネ
>>181 それからして分かんないんだけど・・・
分かりやすく解説したドキュメントってある?
185 :
デフォルトの名無しさん:2007/02/12(月) 14:42:15
#質問
データアダプタでUpdateメソッドを使用したいのですが、
インサート、アップデート、デリート事に、
データアダプタをインスタンス化しなければいけないのでしょうか?
??
187 :
デフォルトの名無しさん:2007/02/13(火) 10:06:48
using System;
using System.IO;
using System.CodeDom;
using System.CodeDom.Compiler;
public class test {
static void Main(string[] arg) {
CodeDomProvider cdp = new Microsoft.CSharp.CSharpCodeProvider();
CodeCompileUnit ccu = cdp.Parse(new StringReader(arg[0]));
}
}
これが
ハンドルされていない例外: System.NotImplementedException: CodeDomProvider はこのメソッドをサポートしません。
場所 System.CodeDom.Compiler.CodeDomProvider.CreateParserHelper()
場所 System.CodeDom.Compiler.CodeDomProvider.Parse(TextReader codeStream)
場所 test.Main(String[] arg)
こういうエラーになるんですが、「このメソッド」とは一体なんのことなんでしょうか?
>>187 CSharpCodeProvider.Parseは実装されてないよ
>>190 え、そうなんですか?ドキュメントにはちゃんと
2.0から追加されましたと書いてあるんですが・・・
>>185 同じUPDATE, INSERT, DELETEを何度も発行するという話なら
privateのインスタンスを最初に1回作ればokです。
そのインスタンスに全ほにゃららCommandプロパティを
設定しておきます。
普通SELECTとUPDATE, INSERT, DELETEは一組だと思うので
その組ごとにデータアダプタを作ります。
<?xml version="1.0"?>
<Database>
<Table>
<ID>1</ID>
<Week>
<Sunday>false</Sunday>
<Monday>true</Monday>
</Week>
</Table>
</Database>
↑のようなXMLファイルをDataSetのReadXmlで読み込んだ場合、
WeekのSundayのデータを取得するにはどうしたらいいんでしょうか?
195 :
194:2007/02/13(火) 14:58:49
自己解決。GetChildRowsで取得できました。
196 :
デフォルトの名無しさん:2007/02/13(火) 21:45:55
キーが押されたらwinmm.dllを用いて対応するwaveを再生する
というプログラムをVS2005で書いているのですが、
いちいちファイルを開いて再生していると時間のロスが心配でメモリに読み込む仕様にしてみました。
Form1_Loadで、用意されたファイルをbyte[] subbufに読み込んで、ファイル数分回しながらbyte[][] bufにぶち込んでみました。
イベントを用いて押されたキーの入力を待ち
入力があった場合byte[][] bufを呼び出したいのですが
どのような設計にすればいいのでしょうか?
適当にフォームのインスタンスメンバにでもしとけばいいんでねえの?
どうでもいいがメソッド内で完結しないような API 呼び出しする時は
byte[] を GCHandleType.Pinned でピン留めしとかんとまずいぞ
なんでもいいから教えろ
何が知りたいのかわかんね
というかなんでSoundPlayer使わないんだろ…1.1?
おはようございます
馬鹿な質問いいですか?
参照設定しているDLLファイルがあるのですが
今はEXEと同じフォルダに置いて実行させています
これをEXEの中に取り込んで単独実行化させることは可能でしょうか?
おねがいします
ilmerge
usingとか正直飽きた
205 :
デフォルトの名無しさん:2007/02/14(水) 11:32:24
PassiveモードにできるFTPツールを作成し、
FTPサーバーにつなげてテストしてみました。
ログインはできた(USERなどのコマンドは受け付けた)のですが、
ログイン後、"PASV"コマンドを実行したら例外エラーになってしまいます。
どうやらコマンドを受け付けないようです。
FFFTPを使って、そのFTPサーバーは"PASV"を受け付けるかやってみましたが、
何の問題もなく受け付けました。
コード上でも"PASV"をコマンドすれば何の問題もなく"227"のコードが
返ってくると思ったのですが・・・
PASVを受け付けさせるためにはもう一つ何か処理を加えないといけないの
でしょうか?
例外エラーってなに
初心者ってなんで難しい事したがるんだろう
他に方法いくらでもあるのに・・・
208 :
205:2007/02/14(水) 11:54:43
"PASV"はTry-CatchでCatch(Exception)に引っかかってしまいます。
"PASV"はStreamWriter型のWriteLine()とFlush()を
使ってコマンド実行しようとしています。この方法で
ログインまではできたので、"PASV"も大丈夫だと思ったのですが・・・
実現したいことは2つのFTPサーバーにつなげて、一方に"PASV"、
もう一方に"PORT"でつなげて、PASVからPORTへファイルを転送
したいと思っています。
>>208 サーバが受け付けてくれないんじゃなくて、プログラムが落ちてるんだと思うけど。
その catch した Exception の中を見れば何が起ってるのかわかるべ。
>208
むかし、カップラーメン買ってきてって頼まれて、
カップヌードル買っていったら、これ嫌いなんだよ!と怒られたのを思い出した。
カップラーメンだけじゃわからんっての。
211 :
205:2007/02/14(水) 13:16:57
209,210さん
ありがとうございます。
ログインした後、以下の関数によりPASVモードにしようとしています。
public int Pasv_Ftp(){
protected StreamWriter clientWriter = null;
protected StreamReader clientReader = null;
try{
clientWriter.WriteLine("PASV");
clientWriter.Flush();
string str = clientReader.ReadLine();
if (!str.StartsWith("227")){
return 0;}
return 1;
}
catch (Exception){return 2;}
}
>>211 だから〜
> catch (Exception){return 2;}
> }
↑ここで catch してる Exception の中身を調べろって言ってんの。
213 :
205:2007/02/14(水) 13:32:49
212さん
ありがとうございます。早速調べてみます。
なんで try してんのに catch の中で何もしないの?
そんなんだったら try する意味ないじゃん。
家庭教師の
try {
おぱんちゅ見たいお^^;;;
クンクン匂い嗅ぎたいお
}
catch(Exception ex){
お・・お・・おっぱいならいい?
だ、、だ、ダメかな?
おっぱいモミモミしたいお^^;;;
GOTO *216
つまんねえよオッサン
} finally {
throw new Exception(); }
System.Environment.Exit();
>>211 StreamWriter,Readerはそんな変なコードで動くの????
StreamWriter使わないからしらないけど、
ログインしたストリームはどうやってもらってるの?
=null なんてやってたらどうやっても動きそうにないが?
これぞまさしくぬるぽ
たぶんあのコードは、広告とかに付いてる「写真はイメージです」と同じ。
文字コードはユニコードでいいんか?
Assembly asm = Assembly.LoadFile("twst.exe");
Type[] typ = asm.GetTypes();
このコードで独自DLLを参照に加えてるexeを読み込もうとすると、GetTypesの所で
実行側のディレクトリにDLLがねーよバーカって怒られるんですが、読み込み元の
ディレクトリからDLLを読み込むにはどうしたらいいでしょうか?
初心者だから分からないだけだとおもうよ。
233 :
デフォルトの名無しさん:2007/02/14(水) 19:32:51
PropertyBindingを何度設定してもデバッグのたびに無効になるよ。
どうすりゃいいんだよ。
ググったら大体答えが出てくるな。
236 :
デフォルトの名無しさん:2007/02/14(水) 21:02:48
>>234 それはやってんだけどなあ、バグなのかな。
SP1入れてみようかな。
>>231 参照してるDLLを先にロードしとけ。
まあ他のことでトラブっても知らんがね。
Formの再描画のタイミングがよく分からないんですが、
Refresh() 以外にもTimer.Start() や Tickイベントが
起こるたびに再描画されますか?
なんでやねん
240 :
238:2007/02/15(木) 07:03:10
入門書を勉強してるんですが、Refresh() を使って再描画してる部分と
使ってないにも関わらず再描画されてる部分があって、後者の場合は
タイミング的にそこら辺で再描画も同時に行われてるかと思ったんで、、
ちなみに「プログラムを作ろう!パソコン教科書」という本です。
そういうときはタイマーを止めてみればそれが原因かどうかわかるだろう
Invalidate
243 :
デフォルトの名無しさん:2007/02/16(金) 01:22:07
テキストボックスへのドロップ時に、ドロップした位置(カーソル位置)に
文字列を挿入するにはどのようにすればいいのでしょうか?
「いったんクリップボードにデータを入れろ」というサイトを見つけてやって
みたのですが、この方法だとドロップした位置ではなく、ドラッグ開始直前の
キャレット位置に文字列が挿入されてしまい訳わかめです(><)
>>238 他のアプリのウィンドウと重なった後や、リサイズ・最大・最小化等でも起こる。
ようはタイミングなんて気にしたらイカン。
>>243 DropでGetCharIndexFromPosition とかで場所から文字のインデックスとって
SelectionStart, SelectionLength でカーソル移動してペースト
でいけないかしら?
>>243 textBox1.AllowDrop = true;
textBox1.DragEnter += delegate(object sender, DragEventArgs e) {
e.Effect = e.Data.GetDataPresent(DataFormats.UnicodeText) ? DragDropEffects.Copy : DragDropEffects.None;
};
textBox1.DragOver += delegate(object sender, DragEventArgs e) {
TextBox textBox = sender as TextBox;
textBox.Select(textBox.GetCharIndexFromPosition(textBox.PointToClient(new Point(e.X, e.Y))), 0);
};
textBox1.DragDrop += delegate(object sender, DragEventArgs e) {
if (e.Data.GetDataPresent(DataFormats.UnicodeText))
(sender as TextBox).SelectedText = (String)e.Data.GetData(DataFormats.UnicodeText);
};
こんなもんか。このままだと最後の文字の後ろにドロップできないが、その辺は適当になんとかしてくれ
>>246 DragOverしたら選択状態が変わらんか?
>>245>>246 ご返答ありがとうございます。
書き忘れましたが実は.NET1.1なんです。
上記を試してみたのですが、TextBoxにGetCharIndexFromPositionが無いようです。。。
で、GetCharIndexFromPositionがRichTextBoxにあるようなのでTextBoxから
置き換えて試してみています。
プロパティドラッグ&ドロップらしきものが無いようなので方法を調べてみて
わからなかったら再度お願いします
>>247 選択解除されるがキャレットを自前描画しなくてよくなる。
RichTextBoxなら自分で処理書かなくても大丈夫だろう
>>250 RichTextBoxのAllowDropをTrueとしてみましたが、反応ないようです。
ああ、1.1か。残念だったな。
253 :
デフォルトの名無しさん:2007/02/16(金) 02:32:04
なぜか、VS2003でDrag&Drop関連のメニューが出てこないだけで、
イベントハンドラを手動で追加したら動きました。
>>246さんのコードをベースにDrop部分をクリップボード経由にしたところ、
末尾入力も出来るようになりました。
private void richTextBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) {
Clipboard.SetDataObject(e.Data.GetData(DataFormats.Text).ToString());
richTextBox1.Paste();
}
皆さん、本当にありがとうございました。
254 :
デフォルトの名無しさん:2007/02/16(金) 05:46:37
すいません。SoundPlayerで普通のwavの再生は出来たんですが、
これをプログラム本体に埋め込むことは出来ますか?
画像はresxgenで埋め込めたんですが、・・・
普通にプロジェクトに追加すればいいだろ
ちょっと聞いてもいいですか、お願いします。
ToolStripButtonで、文字を表示しようと思ってるんですが
うまくいかず。
TextImageRelationプロパティをいろいろ変えてみたんですが出ず、
Overlayで重ねたいんですが、Textが現われんです。
なんかコードで操作必要なんでしょうか。
DisplayStyle?
258 :
デフォルトの名無しさん:2007/02/16(金) 11:02:30
>>257 あー、それか、わかりますた。
助かりましたです、ドモ!!
>>254 2005ならプロジェクトのプロパティのリソースのページで追加するだけ
260 :
デフォルトの名無しさん:2007/02/16(金) 18:27:12
C#でASPのWebを開発中です。
ObjectDataSourceを使ってオラクルのデータをGridViewに表示しています。
SelectMethodには、DataTableを返すGetData()を登録しているのですが、
ObjectDataSource.Select()という一回の呼び出しで、なぜかGetData()が2度
実行されてしまいます。
どなたかこの現象についてご教授願えないでしょうか?
セキュリティホールのIISをインストールする気にならないので
WEB UI触ったことないが、これかな?
>ObjectDataSource.Select メソッド
>データ バインド コントロール
>ObjectDataSource コントロールが GridView コントロールなどのデータ バインド
>コントロールに関連付けられている場合、ページ コードから Select メソッドを呼び出す
>必要はありません。
>Select メソッドは、データ バインド コントロールによって直接呼び出されます。
resx書いてresgenで変換すりゃいいじゃない。
あるいはResourceWriterつかって自作するか。
.NetFrameWorkのバージョンは現在1.0、1.1、2.0、3.0があります。
いろいろ調べてみたのですが、よく分からないので教えてください。
基本的にVS2002やVS2003で開発したものは1.1で動くので、1.0をアンインストール
してもかまわない。VS2005で開発したものは2.0と3.0で動くが、3.0は2.0に機能追加
したもので2.0の機能を使うので、3.0だけを入れられない。
という認識で間違いないでしょうか。無駄なものをHDの肥やしにしたくないので、
私のマシンはXpなんですが、1.1、2.0、3.0だけを入れて、1.0を消そうと思っています。
なんでこんなとこでウダウダ言ってる間にMSの説明を読まないんだ?
266 :
デフォルトの名無しさん:2007/02/17(土) 13:28:12
オープンファイルダイアログについて質問があります。
ファイルの種類のフィルターについてなのですが、
このフィルターのプロパティ項目のストリングを弄るだけで、
原理的に変更がなされるはずですよね。
それとも、他のプロパティに関連してるとかそんな事もあるのでしょうか?
自分の場合はストリングをどんなに弄っても、何も変更がなされないのです。
前使ったときはそんな事は無かったのですが、、、。
つまり、以前はフィルタープロパティは直ぐに変更できました。
それとも、これは、何らかのバグなのでしょうか?
267 :
デフォルトの名無しさん:2007/02/17(土) 13:29:17
"ビットマップ画像|*.bmp|全てのファイル|*.*"
こんな感じなのですが、、、。
コードは?
269 :
デフォルトの名無しさん:2007/02/17(土) 13:55:22
すいませんでした。
一応自己解決しました。
本当に初歩的なことで、勘違いしてました。
どうも、済みませんでした。
TextboxのReadOnryをTrueにすると中の文字が
灰色になってしまうのはなんとかなりませんか?
背景は灰色かもしれないけど文字は黒いぜ
272 :
270:2007/02/17(土) 15:48:41
>>271 すばやいレスthxです。
Textboxの背景色はBackgroundImageで白くできたのです。
表示される文字が灰色なのは気のせいってことですな。
×時期早々(じきそうそう)
○時期尚早(じきしょうそう)
×不幸のズンドコ
○不幸のドンゾコ
×ギブス
○ギプス
277 :
デフォルトの名無しさん:2007/02/17(土) 20:54:27
//sle_1:旧番号
//sle_2:旧番号
long Ai=0
string code,old_id
int i
old_id=trim(sle_1.text)
for i=17 to 1 step -1
Ai=Ai+(long(mid(old_id,i,1)))*(mod(2∧((18)-i),11))
next
choose case mod(Ai,11)
case 0
code='1'
case 1
code='0'
case 2
code='x'
case else
code=string((12)-mod(Ai,11))
end choose
sle_2.text=old_id+code
上記のプログラミングの意味を!!
HELP
C# じゃないのでスレ違いだな
そのキモイ言語なに?
280 :
デフォルトの名無しさん:2007/02/17(土) 21:34:56
どこに行ったら教えてもらえるのでしょうか・・・・
281 :
デフォルトの名無しさん:2007/02/17(土) 21:40:31
PowerBuilderじゃねえの?
スレ立てるまでもないとかそんな感じのスレで聞いてみ
演算そのもののは大して言語に依存してるわけでもなさそうだしな
しかしこの VB に宣言部だけ C を取り入れたような文法はキモいな
PowerScript とか言う言語らしいが
284 :
204:2007/02/17(土) 21:53:23
>>281 中国サイトに誘導するな!
ウィルスが怖いじゃないか!!!
>>282 へえ。調べてみたけどやっぱりキモイなあ
いつからあるのか知らないけれど、類似する言語は山ほどあるのに独自文法を作っちゃうあたり特に…
PowerBuilderって結構古いよ。
VB2の頃にはもうあった。
C#はCと思っちゃいかん、どちらかと言うとVBだ
なにを今更そんな当たり前のことを
いやそもそも Delphi だ
……で何が?
言語自体はVB(非.NET)とはかけ離れてるだろ
VBみたいに使えるようにIDEが頑張ってるだけで
VBもIDEが頑張ってるだけだから
VBのIDEは頑張ってるな
VB.NETのIDEは頑張りすぎだが…
VBさわってないけどintellisenceは C#以上なのか
ずっとBCBしか触って無くて
はじめて2005でVC#触った時 あまりの手回しの良さに驚いた
こりゃスゲーとおもってVC++を使ってみると intellisenceのあまりの放置加減に…
BCB以下じゃん Ctrl+j Ctrl+j !
インテリセンスはVB.NETとC#ならC#の方が賢いと思うよ。
これに慣れちゃうと他の言語使えなくなるんだけどね
あんまかわらんだろう。VB.netとC#ならば。
C#は一文字目から補完候補でるようになったのに、VBはまだなんだよなあ。
VBは名前空間表示してくれなかったり、
クラスの色が変わってくれなかったり
不便なとこもある。
>>298 一文字も糞も、ドット(.)打った瞬間に出るだろw
VBだろうがC#だろうが
C#はCと打てばConsoleあたりの補完候補が出るが、VBはでない。
どうしてドットが出てくるのかわからない。
>>300 C#だと、メソッドの中で一文字目をタイプすると型名の候補が表示される。
VBだとキーワード 「Dim」が必要だから、構造的にこれは無理。なのでこれは仕方ない。
C#書いてて便利だと思うのは new の時の型名候補が的確なことかな。
お前ら知らないのか
VBでもCtrl+Spaceで候補がでてくるんだぞ
使ってみたけど、VBはintellisence弱いでしょ。
コンテクストを全く理解してくれず、メソッドの外なのにクラスのプロパティを候補に出したりしよる。
スニペットもマウス使わないと入力できなくて使い物にならん。
>>303 出るには出るが、知ってる単語を全部表示してくれるじゃん…
>>302 それってVBでは"as"って打った後と同じ状態に過ぎないのでは?w
tryと打ってエンター押したら
Catch ex As Exception
End Try
が挿入されたのは衝撃だった
Exceptionをcatchするのは良くないんじゃなかったっけ?
逆に例外の握りつぶしにつながるような…
そういえばintellisenceで候補が出た時に矢印キーとマウス以外で
選択肢を上下に移動できないのかね
ホームポジションのまま動かせるといいんだけど
キーカスタマイズにも項目ないし
矢印キーまでいちいち 手を伸ばすのめんどくさいんだよね
選択確定するまで単語うちこめってか
漏れは窓使いの憂鬱でなにもかもEmacs風にしてあるから、
大抵のことはホームポジションで出来る。
intellisenseの候補はC-vとかM-vとかでページ単位にスクロールさせてる。
よそ行ったときイラつくのが難点だが。。。
>>310 muleかじった程度の俺では そこまで変更できん……
Windows標準のCtrl-c,v,x,zなんかは変えたくないし
>>307 握りつぶし全般が悪いわけじゃないでしょ。
313 :
281:2007/02/18(日) 20:37:48
>>285 ごめんなさい・・・
中国のはウイルス多いんですね。
今後注意します。(o_ _)o))
レスがないw
315 :
デフォルトの名無しさん:2007/02/20(火) 17:43:37
すいません、C#知識0なんですが、
なにから始めればよいでしょうか?
C言語は、printfしか知りません。
すいません。
C#とCは全く別言語だから気にすることではないが、
何か既習言語がないなら適当に入門書でも買ってくるといいよ。
なにをそんなに謝ってるの?
お前みたいに何でもイチャモンつけるやつがいるから
printf()が分かれば可変長引数がわかるさ
printf(const char*, ...); //関数宣言
Write()が分かれば可変長引数がわかるさ
Write(string format, params object[] arg); //メソッド宣言
初心者です、まったく分かりませんと言うのは釣りだろうな
普通入門書とか買ったり入門サイト見て、それに従って憶えて
分からない所をこことかで聞くものだ
初心者なのでわからないので教えてほしい
お願いします
質問です。
読み込んだstring型の文字列を1行毎(改行コード毎)に処理(とりあえず別のstringにコピー)したいのですが
どのように処理するのが一般的でしょうか?
>>323 StringReaderに突っ込んでReadLine
Vb互換ライブラリ使うのは汚い感じがするな
328 :
323:2007/02/20(火) 19:44:27
っていうか、2.0以降なら普通にStringのSplitでいけるんだけどね
330 :
Start ◆C2QJEAJVdg :2007/02/21(水) 07:19:06
4月からPGになるStartと申します。
仕事上C#をやることになりました。
現在、C#の知識は皆無といっても過言でありません。
なので、4月までには少しでも社員に追いつけるように努力します。
なので。これからこのスレにはお世話になると思いますのでよろしくお願いします。
とりあえず、今理解しているのは意味段落・形式段落・本文で成り立っているって
ことです。そのほかにもMainには一定の形があるというのも理解しております
public static void Main(string[] args)
昨日の今日はじめたので今はこれぐらいですが4月までには色々と出来るように
なりたいと思いますのでC#を勉強中の皆様頑張りましょう。
今、変数に関してちょこっと勉強してみたのですがintは整数を表していますよね?
で、doubleは少数。では、stringとあるんですがこれはいったいどうゆうことでしょう?
整数ではt=3の場合は int t=3 なんですがstringはどういった式ができるんでしょうか?
そんな事疑問に思うってことはプログラミング自体の知識が皆無なんだろ?
入門書買って一通り勉強してからにしてくれ。
string str = "文字列" ;
釣りだろ
こんなんの上司になってしまったら自殺したくなるな。
いまどき能力も確かめずに採る会社ないだろ…
釣りだろ
PGで飯食っていくなら、入門書かってある程度独学で理解出来なきゃ
役にたたん
>331
入門書は会社から提供されたものがあるんでそれで頑張ります。
>332
ありがとうございます。
>333
釣りじゃないです。
>334
そうですかOrz しかし、そうならないためにも頑張ります。
>335
プログラミング知識は皆無と伝えてあります初めはトライアル雇用として働きます。
>336
はい。昨日の今日はじめたばかりなのでまだまだ理解するところはたくさんありますので
頑張っていきたいと思います。
こんな所に書き込みしてるなら、まず本屋回れ
>339
そうですね。ありがとうございます。
後、秋には基本情報処理の試験があるんです。
一応、その時急にゆうと信憑性がないんで今いっときます。
ちなみに基本情報の知識も皆無なので本当にやることが山ほどあります。
転職したほうがいいよ
**********重要**********
Start ◆C2QJEAJVdgあぼーん推奨
**********重要**********
>341
転職ですか。今は内定しやる気があるので転職は考えておりません。
今、自分が出来ることをしそれでも無理だと感じたら別の職種につこうかとは思っております。
とりあえず、先ほどのサイトを全て理解した後、参考書を購入しにいきます。
NEET脱出おめでとう。
でもここはあなたのBlogじゃないから。
>344
NEETじゃないですよ学業→就職で仕事もやる気満々なんで。
そうですね。何かブログみたいな感じなんでもぐります。
質問があるときはよろしくお願いします。
変数の基礎知識もないような人間をプログラマとして雇用するのも豪気だなw
コネ系?
>346
変数基礎は理解しました。
コネ系じゃないですよ。
相 手 に す ん な
ていうか、別に普通にあるでしょ、素人を採用って。
これからどれだけ伸ばせるかが問題であって。
まあでも、まずはサイトと書籍で勉強だな。
どうでもいいが
>>338で勉強するのはやめといた方がいいと思うけどな
意味段落・形式段落・本文って何だよw
雇う側はそれでいいが、教える側はつらい
>349
はい。ありがとうございます。
ただいま、boolを理解しつつあります。おもしろいですね。
が
しかし、私の投稿はこの板違いと自負しておりますので私事情の発言は控えさしていただきます。
なので、これからはスレタイにのっとりわからないことを質問さしていただくようにします。
住民の皆様板汚しすいませんでした。
>>Startさん
まぁ、基本とかどうでもいいよ。
フォームをちょちょっと作って、このボタンを押したら〜とかこのフォームが更新されたら〜とかは
雷マーク押してイベント追加して、処理をかけばいいだけさ。
簡単なもんだよプログラムなんて。
昔はWINMAIN、WINPROCからつくちゃってさ。面倒なことこの上なかった。
>353
助言ありがとうございます。
現在、コンパイルのやり方がいまいちわかっていないために実行することができません。
コンドプロンプトでコンパイルしようとしてるんですができません。
コンパイルに関しては自分で解決しようとしてるんですがお一つ質問があります。
class TRICK
{
Main
{
TRICK is wonderful.
}
}
とありますが【[.]】やタブなどは見易さ重視のタメにあるんでしょうか?
そのほかにも何か意味はあるんでしょうか。
質問をするレベルにも達していない
帰れ
おまえらはおれがプログラムしてやったんだぞ
コンドプロンプト?
コンドームプロンプト?
358 :
デフォルトの名無しさん:2007/02/21(水) 15:27:20
TreeNode に Keyって概念があるんですが、どうもあわてて 2.0から
入れたらしく説明がいまいちしっくり来ないんですがいかがですか。
どうも説明読むと TreeNode.Name プロパティ と同じらしいんですが
これって混乱の元になるかと。
key と読んだり、名前と読んだり、Nameプロパティと言ったりするのは
やめて、KeyならKeyで統一するべきじゃないでしょうか?それとも
NameプロパティならNameプロパティで統一するべきでhないでしょうか。
どうでしょう?
359 :
デフォルトの名無しさん:2007/02/21(水) 15:29:46
もっともKeyは従来の TreeView や Delphi のそれにはあったかと思うんですが
やっぱり検索に時間かかるんでKeyも必要って感じでいれた感じです。
でも用語は混乱を生じないようにした方がいいかと思うんですよね。
あほ
グレースケールのBitmap画像データが3つあって、
それらを適当にRGBに割り当ててカラー画像を作りたいのですが、
そのようなクラスありますか?
色変えて重ねて描画すれば
FTPでnetworkstreamからデータを読み込もうとしています。
StreamReader sr = new StreamReader(networkstream, Encoding.ASCII);
while ((temp = sr.ReadLine()) != null)
{
//コード
}
のようにして1行ずつ読み込もうとしています。
whileの行にブレークポイントを設定してsrの状態を観察しようとすると、
最初に1行読み込むとコードがストップしてしまいます。
エラーも起きずにReturnを処理したかのように終わってしまいます。
networkstreamからReadLineで読み込むのはまずいのでしょうか?
一行分しかデータ届いてないんじゃないの?
改行が来るまでブロックされて当然じゃん
>>364 1行分しかデータが届いていなければ、whileの行に戻ってきたときにsr.ReadLine()がnullを返すと思うのですが、
そうはならないのでしょうか?
「コードがストップ」をくわしく
>>367 意味不明なのはわかります。
なんと説明すればいいのかわからないのですが、そのメソッドの処理が終わってしまいます。
//コード
の中でブレークポイントを設定して一度止めます。
そうするとたしかにtempの中に文字列が格納されていますので1行は読み取ってます。
で、srはどうなっているのかとおもってカーソルをあわせると
EndOfStream 前の関数の評価がタイムアウトしたため、関数の評価は無効になりました。続けて実行し、再度関数の評価を有効にしてください。 System.IO.Stream
と表示されます。F11でコードを進めようとするとコンソールが出てきてそこで止まってしまいます。
VisualStudioのほうは(実行中)のままです。
説明があやふやなのですが、
http://pc2.2ch.net/tech/kako/1039/10396/1039646808.html ここの35と似ているのかもしれませんが、それにレスがついてないのでわかりません。
369 :
デフォルトの名無しさん:2007/02/21(水) 18:17:50
すみません。質問したいのですがよろしいでしょうか。
初心者なんですが引数の使い方についてわかりません。
public delegate double f1(double[] f2);
public int keisan(f1 x)
{
}
↑この関数内で引数xを使いたいのですが、認識してくれません。
この使い方は間違っているのでしょうか?
>>368 自分で意味不明だったら他人に判るわけないだろw
っていうか何が問題なの?
動かないの?
372 :
デフォルトの名無しさん:2007/02/21(水) 18:22:52
型、名前空間名にXが見つかりませんでしたとなってしまいます。
Xを使うには?
>>368 ブレークポイントの話はいいから、結局なんなんだ?
374 :
371:2007/02/21(水) 18:25:41
>>372 xが大文字になってるけどまさかそれじゃないだろうなw
375 :
デフォルトの名無しさん:2007/02/21(水) 18:26:26
それはないです。
376 :
デフォルトの名無しさん:2007/02/21(水) 18:32:38
ポインタを使いたいときunsafeで使うのは良くないんですか?
配列やrefにしたほうが良いのでしょうか?
>>368 どうでもいいからtry catchで例外のひとつでも表示してみろい。
>>369 public int keisan(f1 x) {return (int) x(new double [] {1.1, 2.2});}
381 :
デフォルトの名無しさん:2007/02/21(水) 19:23:59
はじめましてです。
今掲示板作っているんですが、
どうしても先に進めないのでよかったら教えてください。
グリッドビューのページング機能をtrueにしてたんですが、
データベースに格納や参照するコードを書いたら
ページングが出来なくなってしまったんです。
エラー文は、「GridView 'GridView1' はハンドルされていないイベント
PageIndexChanging を送出しました」です。
どうしたらいいか教えていただけますか?
すいませんが、よろしくお願いします。
>>381 >データベースに格納や参照するコードを書いたら
>ページングが出来なくなってしまったんです。
使い方が悪いとしか答えようがない。
Gridイベントの設定が出来てないのでは?
384 :
363:2007/02/21(水) 19:36:49
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Threading;
namespace FTPSample{
class Program{
static void Main(string[] args){
TcpClient tcp = new TcpClient("localhost", 21);
NetworkStream ns = tcp.GetStream();
Thread.Sleep(800);//少し待つ
StreamReader sr = new StreamReader(ns, Encoding.ASCII);
string temp = "";
int LastCode = 0;
try{
while ((temp = sr.ReadLine()) != null){
LastCode = int.Parse(temp.Substring(0, 3));//ここにブレークポイントを置いてsrを見ると止まる
if (LastCode != 0)
break;
}}
catch (Exception ex){ Console.WriteLine(ex.ToString());}
Console.WriteLine(LastCode);
Console.Read();
}
}
}
385 :
デフォルトの名無しさん:2007/02/21(水) 19:37:48
Gridイベントの設定・・・もう一度見てみます。
ありがとうございました。
386 :
363:2007/02/21(水) 19:41:26
ローカルマシンでFTPサーバーが動いています。
これを実行するとコンソールに220と表示されます。
それでいいのですが、
LastCode = int.Parse(temp.Substring(0, 3));
のところにブレークポイントを置いてsrにマウスカーソルを当ててどうなっているか見ようとすると
コードが止まってしまいます。
「srにマウスカーソルを当てると止まる」というのをどういう風に説明すればいいのかわからずにスレを汚してすいません。
これが「srにマウスカーソルを当てても止まらない」状態にするにはどうすればいいでしょうか?
何で今日はこんなに客が多いの?
>>380 そんなところはどうでもいい
たぶんf1の定義位置がおかしい
>>369 ちゃんとできるぞ。
public delegate double f1(double[] f2);
public int keisan(f1 x)
{
return (int)x(new double[] {1.1, 2.2} );
}
private double y(double[] param)
{
return param[0] + param[1];
}
private void button1_Click(object sender, EventArgs e)
{
System.Diagnostics.Debug.WriteLine(keisan(y).ToString());
}
定義の位置が悪いんだろ?
>>386 ようするにプログラムの動作は問題なくて、デバッガの機能の話しをしてるのか?
394 :
363:2007/02/21(水) 20:12:52
>>388 >>393 確かにずっと放置しておけばタイムアウトするのはわかります。
しかし、それならwhileの行にブレークポイントを置いてそこで止まってから少し待って
同じようにsrを見たら切断されていると思います。
1行読み取ったあとすぐに切断されてしまうようなので困ってます。
でも、どうやら私の質問はあまり性質のいいものではなさそうな雰囲気なので
このあたりで撤退いたします。
もう少し現象を絞れたらまた質問させていただきたいと思います。
395 :
デフォルトの名無しさん:2007/02/21(水) 20:21:10
private int simp(ref double[][] p,ref double[] y, ref f1 []x)
{
double[] psum=new double[10];
p[i][j] = psum[j] = 0.5*(p[i][j]+p[ilo][j]);
y[i] = (x)(psum);
}
かなり中身を省略していますがこのような形です。
このときのxでエラーが出てしまいます。
>>394 タイムアウト=「ずっと放置」とは限らない。
>>395 で、なんで ref f1 x ってしてるの?
(x)????
なんだ釣りかよ…orz
>>395 勉強しなおせ。
> ref f1 []x
まずはここからだな。
403 :
デフォルトの名無しさん:2007/02/21(水) 20:32:05
すいません。こんな感じです。
private delegate double f1(ref double[] f);
private int simp(ref double[][] p,ref double[] y, f1 []x)
{
double[] psum=new double[10];
p[i][j] = psum[j] = 0.5*(p[i][j]+p[ilo][j]);
y[i] = (x)(psum);
}
404 :
363:2007/02/21(水) 20:33:58
>>401 コマンドを送る以前に接続したときの220を受け取りたいのですが
それの処理中にネットワークが切断されてしまいます。
ストリームから読み取れない状態になります。
>>384のコードを実行するとちゃんと220が帰ってくるのですが、
途中でブレークポイントを置いたり、ほかのコードを間に挟んだりすると
止まってしまいます。
ブレークしてる間にタイムアウトしてるんだろうが
>>403 * refって何か分かってんのか
* xの型は何か分かってんのか
* なんで(x)って括弧で括ってんだよ
407 :
デフォルトの名無しさん:2007/02/21(水) 20:49:35
(x)はおかしいのですか?
C++で作ったプログラムをC#でやっているんですが、よくわかりません。
やっぱりC++厨だったか。
なんとなくそんな気がしたんだが…
デリゲートは関数ポインタじゃないぞ。
あと次元を考えろよな。
>>407 C++とC#は全く別言語なんだから一からマニュアル読めよ。
>>403 ・refの意味がない。Array型は参照型
・xはパラメータであって型ではない
・y[i]はdouble, xはf1[]で型が合わない
C#でポインタ使いたいんならC++にしろよ
良く言われるがC#はCじゃないどっちかと言うとVBだ
ポインタ使うにもDELL使ってデータ渡すとかその位だな
(´・∀・`)ヘーDELLってなんだろう知らないと馬鹿にされるそうだぐぐってみよう……
∧∧
ヽ(・ω・)/ ズコー
\(.\ ノ
、ハ,,、  ̄
 ̄
勢い余ってミスタッチしただけだ
Dキーの上がEキー
初心者です。
本を5冊買いました。たくさんググりました。
でも分かりません
false=ファルス?フォルス?
int=イント?インテ?
ガベージコレクション?ガーベジコレクション?
教えて下さい、まじめに。
>>416 イヤ本気なんですよ。
活字の情報の限界ですよね・・・・
ちょっと人に説明する機会がありまして・・
ちなみに学生時代にプログラム習う年代ではないので
本当に分からないのです
>>418 そのURLじゃわからねえ。「フォース」に聞こえる。
>>418 そこのボイスのトップどうやってはいるの?
フォゥルス
インテと読むならインテジャーと読もうよ。
インテジャーだから迷うんじゃね?
インテは聞いたことはないな。
えなーぶれど
ビジブル
フォゥルスw
>>431 1. レンダーターゲットを作る
System.Drawing.Graphics.FromImage メソッド
System.Drawing.Bitmap クラス
2. ソースとColorMatrix変えてターゲットに描画
System.Drawing.Graphics.DrawImage メソッド
System.Drawing.Imaging.ColorMatrix クラス
System.Drawing.Imaging.ImageAttributes クラス
たぶんできる
いい加減にスレ無駄に消費して遊ぶのやめろ
>>433 メモリを直接触ったほうが手っ取り早そうな気もする
いちおうC#のスレだから、まずは.NETのクラス使っとけば良いんじゃない?
438 :
デフォルトの名無しさん:2007/02/23(金) 06:20:36
スタイルシートがくさってるんじゃね?
440 :
デフォルトの名無しさん:2007/02/23(金) 13:30:31
はっきり言って俺はC#は詳しいよ。
Append()は戻り値がvoidなので新たにオブジェクトを作らない。
よーく考えろ。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\| ̄ ̄ ̄ ̄ ̄ ̄
_,,t-‐‐-、,-‐‐-、
三'::::::............... .....::::::`y,.
ナ::::::::::::::::::::::::::::::::: :::::::::::::ヾ
| ̄| V::::::::::::::::_{{ ({∫∬ノノjヾ:::::{
| ̄| | ̄| ナ::::::::::::::i`__,,,,,,,ァ_ _,,,,,_ t;;:ヌ
| | | | イヘ::::::(ヾ~!,ャt、 !'''i ィtン )=f }f
| | | | i {t)テ" ヘ' '___,イ ヽ_/ 介'
| | | | _,rヘ_,j|!' /ー--''! |'
|,.ィ―'''' ̄ /| | /二ク !
/;;:::'';;::''::;;:/ { ! 、 ヾニン ノ\
/'''::::;r|''':::;;;| | ! \ _,,./|::;;'''\
/:;;/ |;;;''::;;| 丶\ `__>-ー´ !;;;:'''::iヽ、
i/ |'::;;;;''| 三 ―''" !''::;;;;| /ヽ
/⌒ヽ |;;''':::;| \ !;;::''|/ i
/ \{'';;;::''}  ̄二ニ= !::;;| |
/ヘ |;;:::::;{ ‐- !/ |
/ i |:::;;;''! ー ! / |
/ l |;;'';イ } {、
〉、 ∧テ{ ヽ _ _,,,,;;;;;:::-==ニ;;;_ ノ __,イ´
/ \_ //レ!  ̄  ̄ { ̄ |
441 :
デフォルトの名無しさん:2007/02/23(金) 13:46:57
>>439 てことはそちらでは問題ないですか、とすればこっちだけの問題でしたか・・・。
う〜ん
>>441 使ってるフォントとか、ユーザースタイルシートとか、
IEのバージョン依存だったりするんじゃないかな
443 :
デフォルトの名無しさん:2007/02/23(金) 14:23:51
>>442 どうもありがとう、なるほど。
するとWebBrowserで表示するときに場合によってはその辺の
世話が必要になるかもしれんてことですか。結構大変そうかなぁ・・・。
T add<T>(T a, T b)
{
return a + b;
}
↑をコンパイルすると、演算子'+'は型'T'に適用でできないと
怒られます。T は byte,short,int,long のいずれかなんですけど、
型制約では、int などの指定は出来ないようです。
型別にメソッド書くしかないのでしょうか?
DynamicMethodとかILGeneratorとか使って無理やり実現できないこともないけど
かなり面倒で怪しい方法。
ふつうは別々に書く
はい。
CLRのジェネリクスは演算子オーバーロードと相性が悪いから、どうしようもない。
リフレクション使えば何とかなることはなるが、コンパイラのチェックが入らないから美しくないしね
バイト配列からstringを取り出すとき、文字化けした文字を取り除くにはどうしたらいいでしょうか?
演算子のオーバーロードが暗黙的なインターフェイスの実装として実装されてれば面白かったのにな。
C++上がりの人間としては
ducktypingができると期待してしまうのさ・・・
C#のconstはC++のconstとは違うだよね
違うだよ。
C#のconstは定数を宣言するときにしか使わないだよ。
VB.NETのDLL使いたいんですが、よく分かりません。
どこかいいサイトご存じないでしょうか?
普通に参照設定するだけで使えるはず
でもモジュールはダメかも
>>450 C#のconstは数学定数とか絶対に変わらない定数にしか使わないだよ
455 :
444:2007/02/23(金) 22:33:31
みなさん、レスありがとうございました。
型別に書くのいやだなぁ〜。
その部分だけ、C++/CLI の DLL に出来ないか
見当してます。
具体的に言うと組み込み型の変数宣言に対してしか使えないだよ
プリミティブな数値型にINumericとかつけといてくれればよかったのになあ。
namespace 妄想
{
interface INumeric<T>
: IEquatable<T>, IComparable<T>, IConvertible<T>
{
T Add(T val);
T Subtract(T val);
T Multiply(T val);
T Divide(T val);
T Modulo(T val);
}
struct Int32: INumeric<Int32> { }
}
>>458 Tがそれらのメソッドを持たない肩であると(ry
interface INumeric<T>
: IEquatable<T>, IComparable<T>, IConvertible
where T: INumeric<T> { }
こうですか><
static void Keisan(){
Average(delegate(float a1, float a2) { return a1 + a2; },
delegate(float a1, float a2) { return a1 / a2; },
2f, 6f, 2f, 3f));
}
delegate T TwoParameters<T>(T a1, T a2);
static T Average<T>(TwoParameters<T> add, TwoParameters<T> div, T count, params T[] args)
where T:new(){
T s = default(T);
for (int i = 0; i < args.Length; i++)
s = add(s, args[i]);
return div(s, count);
}
こういうのはどうだ
T countが気持ち悪いけど
間違えた3f, 6f, 2f, 4fだった
TwoParametersをコレクションにしたくなる
>>447 正しいエンコードを判定するのが先じゃね?
>>464 こうですか?
void Keisan(){Average(OperatorsF.Instance, 3f, 6f, 2f, 4f);}
static T Average<T>(IOperators<T> operators, T count, params T[] args) where T:new(){
T s = default(T);
for (int i = 0; i < args.Length; i++)
s = operators.Add(s, args[i]);
return operators.Divide(s, count);
}
interface IOperators<T>{
T Add(T a1, T a2);T Subtract(T a1, T a2);
T Multiply(T a1, T a2);T Divide(T a1, T a2);
}
class OperatorsF : IOperators<float>{
public static readonly IOperators<float> Instance = new OperatorsF();
public float Add(float a1, float a2) { return a1 + a2; }
public float Subtract(float a1, float a2) { return a1 - a2; }
public float Multiply(float a1, float a2) { return a1 * a2; }
public float Divide(float a1, float a2) { return a1 / a2; }
}
秀丸で開いても文字化け警告でなかったぞ
>>468 一部抜粋
<source>
<url>
http://203.131.199.131:8080/roki</url>
<gnl>Vが主</gnl>
<nam>£яoκ・ラRadioψCafe£</nam>
<tit />
<mnt>/roki</mnt>
<tim>1172243353</tim>
<tims>07/02/23 21:07:39</tims>
<cln>4</cln>
<clns>7</clns>
<srv>203.131.199.131</srv>
<prt>8080</prt>
<typ>icecast2.2</typ>
<bit>128</bit>
</source>
秀丸では警告出ませんが£яoκの部分で化けてます
ありゃ、・が消えてるorz
そこの部分のバイナリは0x13でした
0x13 じゃあ Shift_JIS のコード内だから不正ではないな。
化けていると言っても、何をして化けていると判断するのかは微妙なことが多い。
不正なバイトシーケンスなら DecoderFallback とか使えば何とかなるだろうけど……。
つか何で作ったらあぁなるん?
いったい何がしたいんだ?
正しく表示したい訳じゃないのか?
>>471 XmlSerializerで逆シリアライズするときに0x13が無効な文字だと出てくるので化けてると
思ったのですが、Shift-JISのコード内ですか…
通りでDecoderFallbackに引っかからないわけだ orz
非整形式か。
そりゃもう 0x09/0x0A/0x0D 以外の 0x20 未満を適当に置き換えるとかそんな地道な手段しかないような気がする。
.NET の XML 関連は非整形式に優しくない。
>>475 この方法でうまくいきました。ありがとうございました。
>>435 Scan0を使って直接メモりに入れる方法でやっつけた
Strideがやっかいだね
478 :
デフォルトの名無しさん:2007/02/24(土) 17:15:56
ttp://dotnetfan.org/forums/thread/625.aspx を参考にし,
axVcc5Ctrl1というVB6/VC用OCX(コントロール)をForm1に配置,使用しています.
ここでaxVcc5Ctrl1のメソッドは問題なく使用できているのですが,
イベントのパラメータが取得できません.
例えばint型の2つのパラメータを持つイベントAckRxEventは,サンプルであるVB6からは
------
Private Sub Vcc5Ctrl1_AckRxEvent(ByVal wParam As Long, ByVal lBytes As Long)
〜
End Sub
-----
のように使用されています.
一方,VSで生成されたC#のソースでは
------
Private void axVcc5Ctrl1_AckRxEvent(object sender, AxVcc5AXCtrlJ.__Vcc5Ctrl_AckRxEventEvent e){ }
------
となっており,senderとArgcしか渡されていません.
どのようにすればパラメータ(wParamやlBytes)を受け取ることが出来るでしょうか?
eのプロパティは?
480 :
478:2007/02/24(土) 18:04:55
>>479 ぉぉぉぉ・・・ e.lBytes, e.wParam でokでした!
全然気がつきませんでした・・・(Form1.Designer.cs の方とか見たりぐぐったりしてた)
ありがとうございました.
>>478 axVcc5Ctrl1
なんか嫌な名前だな
StatusStrip を配置してあるフォームに、
RichTextBox を配置して、Dock=Fill にすると、
StatusStrip を無視して Fill しちゃうんですけど、
そういうものなんでしょうか?
まず、パネルを配置してから、その中に
RichTextBox を置くしかないのでしょうか。
ToolStripContainerは?
背面にあるコントロールから優先的に配置されるから、
ドキュメントアウトラインでD&Dして順位を変えればいい。
文章を単語に分割したいのですが、
ワードパッドで文字をダブルクリックしたときに、
選択されるくらいの精度で良いので、何か文章を単語に
分割するAPIはないでしょうか。
chasenなどの外部ソフトをインストールしなければ
ならないもの以外で探しています。
てきとー
Regex.Matches(textBox1.Text, "([あ-ん]+)|([^あ-ん]+)")
>>485 精度気にしないのであれば、単純にスペース・カンマ・文字種の境目etcで
ぶったぎる処理を自分で書いたらいいんじゃと思うんだが。
489 :
デフォルトの名無しさん:2007/02/25(日) 21:52:22
Windowsで、Explorerでファイルなどの選択の方式を
Mouseのポイントだけで可能にしてあるか、それともクリックで初めて
選択となるか、の設定を知る方法はあるでしょうか?
自分のアプリもそれに合わせるにはどうすればいいでしょう?
レジストリのどこかに記録されてるでしょ。
レジストリの差分とるソフトで確認してみればいいんじゃない?
491 :
デフォルトの名無しさん:2007/02/25(日) 22:01:53
>>490 >レジストリの差分とるソフトで確認して
なるほど
どうもでした!
492 :
デフォルトの名無しさん:2007/02/25(日) 22:46:09
どうしてVisual C++の開発環境とかは高いお金を払って買ったのに、
C#の開発環境は無料で手に入るのはなんで?
今では VC++ も無料ですよ
MFC やら ATL やらはその限りじゃないけど
.NETを広めたいからじゃない?
あとは、C#布教用か。VBも、それなりの待遇はしている様子だが、
VC++は、使いたければどうぞ。的な雰囲気があるような気がする。
VC++も無料なんだ
今やこんな立派な開発環境が無料で手に入る時代なんだなぁ
497 :
482:2007/02/25(日) 23:43:13
勉強になりました♥
C# & SQL Server 2005 でスタンドアロンなDBアプリを作りました。
これを、C/S型にしてクライアントを複数同時起動できるように
したいです。
どこか参考になるサイトがあったら教えてください。
499 :
485:2007/02/26(月) 00:40:16
それっぽいものができました。
どうもありがとうございました。
MSDN
C#のジェネリックで、列挙体を引数や戻り値に取るメソッドを作る方法はないのでしょうか?
public TEnum SomeMethod<TEnum>(TEnum param1) where TEnum : System.Enum
のようなメソッドを作ると、「制約は特殊クラス 'System.Enum' にはなれません。」とのエラーになってしまいます。
無理だね
delegate の制約したいんだけどなぁ
504 :
502:2007/02/26(月) 01:50:55
回答ありがとうございます。
やはり無理ですか。とりあえず、必要な列挙体の分だけオーバーロードすることにします。
VBの自作クラスをC#で初めて使う事ができました
とてもうれしいです
どういたしまして
507 :
デフォルトの名無しさん:2007/02/26(月) 22:09:14
TextBoxやRichTextBoxで、トップラインの行番号を指定してページをめくる
ようなことはプログラムからできるでしょうか。プロパティ見るとどうもなさそう
ではありましたが・・・
EM_SCROLL とか EM_LINESCROLL とか使えばなんとかなりそうだな
あとはまあ GetCharIndexFromPosition とか GetLineFromCharIndex とか
行選択しといてScrollToCaretでもできた気がしたけど。
まあ、あんまりエレガンドじゃないか
510 :
デフォルトの名無しさん:2007/02/26(月) 22:41:56
>>508さん、
>>509さん、ありがとうございます
EM_SCROLL,EM_LINESCROLL,GetCharIndexFromPosition,GetLineFromCharIndex
ScrollToCaret,など情報どうもです、さっそく調べてみます、助かりました。
ところで、これらのコントロールにはキーを送りつけるようなことは可能でしょうか、
やってみたいことは、デュアルで並べたものに片方のキーイベントをもう片方にも
同時に送るといった感じのことです。
受け取ったのと同じWM_KEYDOWN/WM_KEYUPを投げればいいんじゃないの。
例えばマウスでドラッグされたらどうする?
とか考えると同期ってのはなかなか大変だぜ
513 :
デフォルトの名無しさん:2007/02/26(月) 22:56:20
>>511-512 どうもです、助かります、やっぱり方法はあるのですね、
WM_KEYDOWN/WM_KEYUPなどで調べてやってみますです。
そうですね、同期させるとなると難しいかもしれないですか、
片方は隠れてるのに片方はあわられてるとかになる可能性は
ありますか・・・。またちょっとがんばってみますです。
ありがとうございました!!
514 :
デフォルトの名無しさん:2007/02/27(火) 11:32:45
>>511様
すみません、基本的なところでわかってませんでした(><。。
WM_KEYDOWNなどこれとかはもしかするとMFCなどアンマネージドドコード
での利用になるでしょうか。できればマネージドコードのみで処理できれば
と思いますが、マネージコードでコントロールの外部からそのコントロールに
対してKeyEventを発生させるということは可能でしょうか?
よろしくお願いします。
>>514 マネージコードで処理できる
通常コントロールのWndProcメソッドをoverrideして使う
サンプルは、『WndProc C#』でぐぐればいくつか出てくる
>マネージコードでコントロールの外部からそのコントロールに
>対してKeyEventを発生させるということは可能でしょうか?
試したこと無いけど、MSDNかどっかに、イベントの発生は
イベントを生成したクラスからのみって記述があったような希ガス
ただし、デリゲートを介せば出来るように思うが…
>KeyEventを発生させるということは可能でしょうか?
コントロールを継承してOnKeyXXXを間接的に呼び出すメソッドを追加するだけ。
でも、フツーにコード書いてればそんなことがしたいと普通は思わないと思う。
逆に言えば、そんなことがしたいと思うのはどっか設計的にマズいコードの可能性が高いと思う。
517 :
デフォルトの名無しさん:2007/02/27(火) 12:26:12
>>515 さっそくどうもです、助かります。
WndProc C# で調べてみました。
>デリゲートを介せば出来るように思う
これは、一旦コントロールを基本クラスから継承して
新たに作成して、そこに WndProc() をオーバーライドした
Publicメソッドを用意しておいて、そこに WM_KEYDOWN
などのメッセージを外部から投げ込んでやるといった
感じでしょうか?いろいろお聞きしてすみません。
518 :
デフォルトの名無しさん:2007/02/27(火) 12:29:28
>>516 かぶりました、すみませんです。
>コントロールを継承してOnKeyXXXを間接的に呼び出すメソッドを追加するだけ
なるほど!!そうやるんですか、わかりました!!どうもです!
目的は
>>510のようなことなのですが、やったことないことなので
方法がわかりませんでした(><。
>>517 >これは、一旦コントロールを基本クラスから継承して…
違う
デリゲートを調べて貰えれば分かると思う。
516で出来るんならそれでいいとは思うが、
出来なければ516で作った関数をデリゲートを介するようにすればいい。
まあ、いろいろ試してみてください。
>メッセージを外部から投げ込んでやるといった…
Win32APIのPostMessageを使うのも一つの手
マネージドコードという要求から外れると思うが
あまりこだわらずに、Win32API使えばいいんじゃないって気もするけど
まあそれよりも、過去レス見ると個々のイベントでやりとりするのは
>>512さんの指摘通り
大変とおもうけど(アプリの詳細がわかんないからなんともいえないけど…)
520 :
デフォルトの名無しさん:2007/02/27(火) 14:09:44
C#って、今までCで使ってきたstrtokなどの標準関数は使えないのですか
あとポインタはないのですか
だとすると、C/C++と違い、Cを名乗れるような言語じゃありませんね
ほとんどJavaじゃん
静的コンストラクタで列挙以外を弾け。
いや俺も美しくないとは思うよ…
Cじゃないもん。
ポインタはあるけど。
名前の一部にCが入ってるだけで「Cを名乗っている」ことになるなら、COBOLも
BASICもCを名乗ってることになるなぁ。
>>521 お〜サンクス、参考にしてみます。
unsafeでポインタ使えるのか。ま、でも、使う機会はめっきり減りそうだな
>>524 それは論理的におかしいでしょ
C言語
C++
C#
COBOL
Cの後ろにあるトークンを見れば、明らかに種別が違うでしょ
よってパターン的に、C言語を継承したものだと認識される
BASICなんて全くもって論外では
>>526 >Cの後ろにあるトークンを見れば、明らかに種別が違うでしょ
それはお前の脳内基準だな。
>よってパターン的に、C言語を継承したものだと認識される
名前の付け方にそんなルールもパターンも無い。
>>520 だったらC使ってたらいいんじゃないの?
CやC++と同じなら誰もC#なんて使わないよ…
>>527 アホですか?
C#のCがC言語に由来するのは明らかだろうに。
まあC++のリプレースメントって意味でC#という名称にしたのであって
互換性がないのが問題とは別におもわんがね
C≠≠
って教わった
スーパーファミコンでファミコンのゲームが動かないのと同じだよ
ネーミングが悪いとしかいいようが無いな。
非互換性云々の問題以前に、C/C++とは守備範囲が全然違うから、
C/C++のリプレースメントになどなりようもないのに。
むしろMSがマーケティングのために敢えて誤解を招きやすいネーミングにして
C/C++層を誘い込もうとした、そのためだけにつけられた名前と言うべきだろう。
Cの文法を継承してるってだけでしょ
C++/CLIもISOで「C++ではない」って言われてたけどなw
ここまで酷いイチャモンは初めてだ
>>529 リプレースにはならんだろ。
それに、「C#のCがC言語に由来している」のと「C#がCを名乗っている」のは全く
違う話なんだが。
>>533 それだけならJavaだってPerlだってPythonだって
Cほにゃららとつけてもいいことになるな。
>>534 実際その通りだろ
俺はJavaやPerlやPythonがCなんとかでも別に構わんと思うが…
C#が全然違う名前だったら今より流行ってないのは間違いない
>>537 >それだけならJavaだってPerlだってPythonだって
>Cほにゃららとつけてもいいことになるな。
いいんじゃねえの別に。
言語の命名規則なんて存在しないんだから。
命名者のセンスの赴くままで。
>>588 この世にCのオブジェクトコードとリンクすら出来ないCほにゃららを
出すのがMSだけで良かったな。
そんなのが大量に出回っていたら世も末だ。情報にアクセスしにくくなるし
初心者にはわけわかめだろう。
それにしても、とっくにインターネット時代になっていたというのに、こんな
検索しにくいキーワード(.NETだのC#だの)を打ち出してくるMSは
池沼としか言いようが無いな。
商標侵害その他で訴えられない限りは何でもいいだろ普通
検索しにくいのは同意。
>>542 法的にはいいんだろうな。
「ニッキーマウス」みたいな、ブランドパクリ安物みたいな
ネーミングだから嘲笑われるだけで。
検索しにくいか?
「C#」って普通にgoogleで検索できるっしょ
でも J++ よりは多少マシかな・・・
C#はまだマシとして.NETをなんとかしてくれ
デゼニランド思い出したw
三月磨臼
POLISHは結構すぐに閃いたが、ATTACHは一週間くらい悩んだな
春だねぇ
突然あったかくなったからね……
>520以降おかしくなったのか
>520
春休みっていつ終わるんだ?
>520-555まで全部アホだと思うのだが
556 :
554:2007/02/27(火) 19:58:15
557 :
505:2007/02/27(火) 20:09:24
昨日作ったDLLに2次元配列を渡せるように出来ました!
とてもうれしいです
あ、ああ。
(おかしなおじさん達は気にせずに)がんばってね。
>>558 ありがとうございます!!
プログラムって面白いですね
レベルの低い話をしてすみませんでした
そういえば多次元配列ってあんまり使う機会ないな
562 :
559:2007/02/27(火) 20:36:52
あ、やりたい事はテキストファイルから必要な文字だけ取り出して
VBのDLLにセル番号とStringをセットにして一度に渡したいんです
(DLLはExcelに書き込むクラスです)
んで2次元配列にしてStringとセル番号を1セットにして数セット処理したいんです
なんかもっといい方法ありましたかね・・・
でもいい練習になりました
List<>なんかで済むならそもそも配列自体あまり
上級者になると配列は使わなくなるんですね
なんか意外でした。
まだまだ先は長いなぁ・・・
使えるのは2005からだけど
List<>やDictionary<>みたいなものはむしろ初心者が扱いやすいよ
配列みたいな生データぽいのより、もっと抽象的な構造を使うようになるんじゃないかなあ。
行列とかならズバリ多次元配列かもしれないけど。
ジェネリックリストができてから一次元配列を使う理由はなくなったな
なるほど・・
今は本を見ながらコツコツやってるんですが、何分歩みが遅いので
まずは配列とか基本をしっかりやろうと思います。
んで出来上がったら教えてもらったList<>やDictionary<>とかで
洗練させていきたいと思います。
ありがとうございます
ちなみに2005EEです(C#、VB共に)
C#なんだから半音上がってるんだよ
CとDの間、Cじゃない
List<>便利だよね
配列のように扱えるし
571 :
568:2007/02/27(火) 21:07:38
このスレは優しい人が多いから好きです
>>568 要素数が先にわかるなら配列のほうがいいよ
単純ゆえに高速だから。
>>572 そうですか!実は今動的配列?にしてるんですが
素人目にもなんかムダっぽいなぁ・・と感じてました。
(中身を新しい配列に入れなおすんですよね?)
>要素数が先にわかるなら配列のほうがいい
貴重な情報ありがとうございます。初心者本にはこういうの載ってないんですよね
574 :
デフォルトの名無しさん:2007/02/27(火) 22:12:23
>>519 またどうもです。
>516で出来るんならそれでいいとは思うが、
>出来なければ516で作った関数をデリゲートを介するようにすればいい。
>まあ、いろいろ試してみてください
片側のキー入力があったほうのコントロールから、Focusのないほうの
public な間接メソッド(=そこで OnKeyDown メソッドを呼び出すもの)
をコールして、そこに KeyEventArgs を投げてやってみたのですが、
OnKeyDown メソッド中で base.OnKeyDown() していてそこを通っている
にも関わらず、結果として Focusのない方のコントロールにはKey入力が
入っていっていないようでした。
原因が何なのかわかりませんが、これはやはりおっしゃっているように
deligate を使う必要がありそうでしょうか、それとも、外部からのKeyValue
の投げ込みはよりも、WindowMessageの送り込みでやるべきだということ
なのでしょうか。いろいろお聞きしてすみませんです。
OnKeyDown呼んだらKeyDownは起こるけど、
実際にキーが押されたことにはなるわけないじゃん
576 :
デフォルトの名無しさん:2007/02/27(火) 22:34:12
>>575 なるほど、やっぱり無理だったでしょうか。
実現したい機能は
>>510のようなことですが、
たとえばVS2005のコードエディタなどにありました、あのように
一つのテキストファイルをマルチ画面で表示できてさらに
片方の入力結果もう片側にもちゃんと反映しているようなもの
というのは、実際にはどうやって作られているのかわかりませんでした。
あれができているということは、なんらかの形で実現できるものと
思っていましたが、その場合はKeyイベントではなくてやはり
WindowMessageの送信が必要ということでしょうか?
漢字変換はどうするつもりなんだ
>>576 いや、必要なのはこつこつ基礎から学ぶ態度。
実現したい仕様を漏れなくかつ簡潔に人に伝えようとする努力。
TextChanged でもう片方にそのままコピーとかな
580 :
デフォルトの名無しさん:2007/02/27(火) 23:01:24
>>577 あ、なるほど漢字変換も対応が必要でした・・・やっぱり難しいかなぁ。
キーいちいち送っても変換までDualではやってくれないですかね。
>>578 目指すところは、結局VS2005で採用されているようなエディタにように
片方での入力を完全にもう一方にも反映させる機能でした。
>>579 確かにそれもありました、そのときに表示画面が元の位置まで
スクロールされて戻らなければならない点があり、その結果、
>>507 のように対応しなければならないかもとも思ったのですが、、
もしキー入力がそのままもう一方にも届けばそうしなくても済むため、
その方法を知りたかったのでした。
581 :
デフォルトの名無しさん:2007/02/28(水) 00:16:11
エクスプローラの画像の縮小表示みたいなのを実装したいのですが
どうすればできますか?
どこまでできてて何が分からないんだ?
583 :
581:2007/02/28(水) 00:30:06
え・・どこまでって、何も出来てません。
ListViewのViewをLargeIconとかDatailsとかにすると大きいアイコンや詳細表示になりますよね?
縮小表示も標準装備されてたらいいのですが、出来ますか?
出来なかったらどのように実装するか全然分からないので、考え方?を教えて欲しいです。
漏れはFlowLayoutPanelにButtonをずらずら流し込んでそんな感じのを作ったことがある。
>>580 575の指摘は、OnkeyDownをラップしているpublicな間接メソッドの
引数がおかしいのでは?っていう意味。
デリゲートは気にしなくていい
OnKeyDownの引数のKeyEventArgsはきちんと渡しているの?
(ここに、どのキーが押下されたかの情報が入ってる)
>>583 縮小画像というのは、Jpeg等の通常の画像?
それをどこに表示したいの?
とか、もうちょっと詳細な情報があった方が…
587 :
581:2007/02/28(水) 00:51:43
こんばんは。
ASP.NET1.1/VS2003でWebアプリケーションを作成しています。
コードビハインドのPage Loadで、テキストボックスに属性を追加する
静的メソッドを持った以下の共通クラスを作ってみました。
--
using Sytem; using Sytem.Web.UI; using Sytem.Web.UI.WebControls;
namespace hoge{
public class WebControlUtil{
public WebControlUtil {}
public static void AddAttribute(TextBox tb , Page pg){
tb.Attributes.add("bluer","JavaScriptの関数(" + pg.FindControl(tb.ID).ClientID) + ");"); ※
}
}
}
--
上記のメソッドをコードビハインドのPage Loadで呼び出して、
WebControlUtil.AddAttribute(textbox, Page);
のように呼び出したのですが、※のラインで
「オブジェクト参照がインスタンスに設定されていません」というエラーが
出てしまいます。
私としてはtextboxとPageはインスタンスになっているのでエラーが出る原因が
分かりません。なぜえらーになってしまうのでしょうか?
よろしくおねがいします。
そのコードの断片だけから考えるに、FindControlがnullを返したんだろう
590 :
デフォルトの名無しさん:2007/02/28(水) 01:06:22
>>586 一応KeyEventArgsもシグネチャ通り渡したのですが、入力されて
行かなかったのでした。とりあえず、完全に同じようにはなりませんが
Textを丸ごとコピーする方法で今回はよしとし、またいつかトライして
みたいと思います。
皆様大変どうもありがとうございました。
591 :
デフォルトの名無しさん:2007/02/28(水) 07:17:11
ストリーミング(ネットラジオ)を録音・保存してリアルタイムでエンコードかけたいのですが・・・
よくわからなければ保存してリアルタイムでエンコードかけようかと思ってるんですが、
C#でやるのはどのような手順を踏めばいいでしょうか?
DirectShow
593 :
デフォルトの名無しさん:2007/02/28(水) 12:54:05
>一般的なアイコンを仮に使うようにしたいと思いました。
一般的なアイコンが取得できるのなら、
>>593の方法でも取得できるんじゃないの?
>この方法でもアイコンが取得できない場合があり
もともと、アイコンが設定されてないものから取得は出来ないと思うんだけど
一応Iconクラスで2.0以降からアイコンの取得は出来るようになってるけど、
結果は多分
>>593と同じだと思う
ListViewを貼り付けているフォームがあります。
フォームの大きさを変えたとき、それに合わせて自動的にListViewの大きさを変えるには
どうしたいいですか?
もしかすると、イベントハンドラに、自分で書かなければなりませんか?
>>595 Anchorプロパティ or Dockプロパティ
IconクラスのSaveメソッドで、アイコンの保存したのだけど、
色の表現が変わってしまう
(Iconクラスのコンストラクタで取得したときと、保存したアイコンを表示した時の比較)
どんなかんじかというと、3万色から256色に減色されたような感じで
これって仕様?
598 :
デフォルトの名無しさん:2007/02/28(水) 14:01:42
>>598 リンク先は関係無いよね。一応見てみたけど。
>そこでその場合は urlリンクファイルに共通のアイコンを取得するべきなのか
多分、拡張子がlnkのファイルを指していると思うんだけど
そうだとすると、そこにはリソース(ここでいうところのアイコンの画像)は埋め込まれていない。
エディタで見てみると分かる。
そのかわりに、IconFileと書かれているところに画像があるから、そこから取得していくようになってるぽい。
つまり、exe形式のように実体がアイコンとして埋め込まれているのではなく、
lnkファイルにアイコンリソースの埋め込み先のURLが書かれている。
アプリでアイコンファイルがあるURLの先まで追っていけば、もしかしたら(いや多分)
>>593でも取得できるかもしれない
少なくとも、画像としての取得は可能だからアイコンに変換することは出来る
>>599 サンクス
そうなのか
まあ、自分用のアプリで見た目以外になんも困ってないからいいけど
602 :
600:2007/02/28(水) 14:26:18
>そのかわりに、IconFileと書かれているところに画像があるから、そこから取得していくようになってるぽい。
日本語が分かりづらいのでちょい補足
『lnk形式でアイコンを表示しているアプリは』を前に補ってください
つーか.urlファイルのアイコン取りにいくと、
システムにキャッシュが残ってればFaviconが返ってくるよ。
そうでないときは.urlファイルのデフォルトアイコン。
605 :
デフォルトの名無しさん:2007/02/28(水) 14:55:56
>>600>>602 教えて戴き感謝です、どうも現象がこのアドレスのショートカットの場合だけ
起こるので不思議に思ってましたが、そういう場合にも対応可能にしないとと思ったのでした。
Lnkファイルの場合は内部構造が難しくてわたしにはわかりそうもありませんので
またググってみます。
IEなどからのD&Dで作成したURLリンクファイルの場合は、拡張子がurlでしたが、
通常は一般的なURLリンクファイル用のアイコンが取得できていますので、
>>593の方法で普通は取れるのだと思います。
ただ何かの場合に取れないケースがあるので、その場合の応急対策をと考えました。
この場合だけに起こる理由もまた考えてみます。
もうちょいサービスすると、URLからの画像の取得はこんな感じ
簡単にできる(イメージの取得は確認済み。アイコンはやったことがない)
XmlUrlResolver resolver = new XmlUrlResolver();
Uri fulluri = new Uri(href);
System.IO.Stream stm = (System.IO.Stream)resolver.GetEntity(fulluri, null, typeof(System.IO.Stream));
image = Image.FromStream(stm);
hrefはstring型でURLを指定。Image.FromStreamをIconクラスのコンストラクタで置き換えれば
多分いける
>>593 のコードって、アイコンハンドル解放してなくね?
Cloneしたほうを使ってhIConはDestroyIconすべきじゃないか
608 :
デフォルトの名無しさん:2007/02/28(水) 15:00:48
>>603>>604 やっぱり普通は返ってくるんですよね、どうしてだろ・・・・
ここのアドレスだけだめなので、またなんとかがんばってみます。。。。
>>606 ソースまでありがとうございます。またがんばってみます。
うわっ!!!!!マジごめん
新スレ立てちゃった・・・・・・
AxWindowsMediaPlayerが動くWMPの最低バージョンっていくつですか?
615 :
デフォルトの名無しさん:2007/03/01(木) 00:20:11
あ〜数日前からC#勉強し始めたけど、結構めんどいわ
ジェネリックだの、デリゲートだの、インデクサだの・・・
全部覚えてられん
Cは単純だったのになぁ
MDIというやつで
子フォームをいくつかShowして
その子フォームの順番を知りたいのですがどうしたら良いのでしょうか?
AForm
BForm
CForm
というのがAFormが一番上、
BFormが真ん中、
CFormが一番下で重なっているようなイメジージです。
619 :
デフォルトの名無しさん:2007/03/01(木) 19:27:28
MFCで言うところのMDI型アプリケーションはどうやって作るの?
>>619 WinFormsなら親フォームのプロパティを変更するだけ
フォームプログラミングについてわかりやすく順序立てて解説してるサイトか本ないですか?
グリッド系とか余程複雑なコントロール以外はMSDNライブラリ読んで試せば
だいたい分かるじゃん。
それがRADってもんの利点の一つなんでは?
・・・そうですか
すいません、出直してきますorz
624 :
デフォルトの名無しさん:2007/03/01(木) 20:38:03
625 :
573:2007/03/01(木) 20:52:57
すみません。なんか変な事書いちゃったみたいです
VBのredimと勘違いしてました
そうそう!List<>出来ましたよ!!
ググって初めて分かったんですが、コレがジェネリックってやつなんですね!!
Stringbuilderとの組み合わせでかなり早くなりました。
ありがとうございました
>>621 C#によるプログラミング Microsoft Windows(上)(下)
これがおすすめ。
>>624 すぐバグバグ言うやつの脳味噌がバグってるというのが定説
Windows XP, VS2005, .NET Framework 2.0, Acrobat Pro 7.0で開発をしています。
やりたいことは、一般的に印刷可能な形式のファイル、
ワード、エクセル、パワーポイント、一太郎、画像、テキスト、HTML等を
PDFに変換することです。
Acrobatが入っている前提なので、プリンタとしてAcrobat PDFが入っており、
手動でそれを指定して印刷してやると、PDFとして吐き出してくれます。
聞きたいことは、C#+.NETで上記のようなファイルを印刷する(Acrobat PDFに渡してやる)方法です。
ネットで調べたところ、文字列と画像はSystem.Drawing.Printing.PrintDocument でprintで
印刷できることが分かりました。
しかし、いくら調べてもそれ以外のドキュメントを印刷する方法が分かりませんでした。
それさえわかれば、PrinterSettings.PrinterNameでAcrobat PDFを設定してやり、
印刷してやればPDFを作ってくれると思うのですが…。
よろしくお願いいたします。
画像の印刷のサンプルコードはここで確認しました。
ttp://dobon.net/vb/dotnet/graphics/printdocument.html
一太郎とかは君には無理だ。
AxWindowsMediaPlayerを使用しているのですが、たまにRaceOnRCWCleanupが発生してしまいます。
これは、勝手にRCWを解放しようとしてるために起こっているようなのですが、勝手にRCWを解放するのを
抑制するにはどうしたらいいですか?
>>628 プリンタを列挙してもAcrobatPDFとやらは出てこないの?
foreach (string name in System.Drawing.Printing.PrinterSettings.InstalledPrinters){
Console.WriteLine(name);
}
>>631 プリンタはどうにかするみたいだけど、
一太郎のオブジェクトが作れないと言ってるんじゃないの?
>>631 >
>>628 > プリンタを列挙してもAcrobatPDFとやらは出てこないの?
> foreach (string name in System.Drawing.Printing.PrinterSettings.InstalledPrinters){
> Console.WriteLine(name);
> }
いや、でてきますし指定もできますが…。
画像ファイル以外の印刷可能なファイルを、PrintDocumentのオブジェクトに渡す方法がわからないのですが…。
画像ファイルなら
//画像を読み込む
Image img = Image.FromFile("test.bmp");
//画像を描画する
( System.Drawing.Printing.PrintPageEventArgs ) e.Graphics.DrawImage(img, e.MarginBounds);
という処理をPrintPageEventHandlerに関連づけられたメソッドの中でやれば印刷できますよね。
実際これでPDF化できましたし…。
わからないのは、画像以外のファイルを印刷する方法です。
画像じゃないのでDrawImageは使えないし、かといってDrawFileとかDrawStreamとかいうメソッドもないですし…。
635 :
618:2007/03/01(木) 22:33:10
わかりません;_;
頑張って読み込んで
GDI上にレンダリングすればいいんじゃね
一太郎ドキュメントだってMSWordに読ませりゃいいじゃん
641 :
624:2007/03/01(木) 22:43:04
>頑張って読み込んで
kwsk
643 :
デフォルトの名無しさん:2007/03/01(木) 22:53:15
クラスAが所有しているフレームインスタンスを
クラスBに参照渡しで渡したとします
そしてクラスBの中でそのフレームインスタンスに対して
コントロール(メニュー含む)追加や削除など
色々と操作することはオブジェクト指向的に違反ですか?
シングルトンもダメってこと?
フレームってなにさね?
>>643 参照渡しにする意味がわからんが、問題ないだろ
647 :
624:2007/03/01(木) 23:05:27
すいません、事故解決しました。
単にURLが長すぎてステータスバーに入り切らなかっただけっぽい。
昭和生まれのお兄さんがたに質問ですが、c#は面白いですか?
これが安易にバグとか言い出す奴の結末というわけだな
650 :
643:2007/03/01(木) 23:12:12
回答ありがとうです
フレーム → フォーム です
動的にコントロールを追加/削除するのもアリですか?
あり
652 :
デフォルトの名無しさん:2007/03/01(木) 23:14:24
トンクスです
653 :
デフォルトの名無しさん:2007/03/01(木) 23:24:13
C# 2005 Express Edition
についてるヘルプは、Visual C++に比べて分かりにくいし、クラスが全て載ってるわけじゃないし
ゼロから勉強する人は本買う必要あるかも
>>635 いわゆるZオーダーって奴のことだよね。
たぶん組み込みの機能としては用意されてないと思うけど、比較的簡単に実装できないか?
例えばこんな感じ。
1) 各子フォームにZOrderというプロパティを実装する
2) 自分がActiveになったとき、ZOrder = 0
3) 自分よりZOrderが小さい(小さかった)他のフォームがActiveになったとき、--ZOrder
課題でC#でBMIを計算するコンソールプログラムを作っています。
計算結果を小数点第1位で四捨五入したいのですが、うまくいきません。
ソースは
static void Main()
{
double Height,Weight,bmi;
string Figure="不明";
System.Console.WriteLine("身長を入力してください 単位(m)");
Height=Double.Parse(Console.ReadLine());
System.Console.WriteLine("体重を入力してください 単位(kg)");
Weight=Double.Parse(Console.ReadLine());
bmi=Weight/(Height*Height);
if(bmi>=25)
{
Figure="肥満";
}
else if(bmi>=18.5)
{
Figure="標準";
}
else if(bmi>=0)
{
Figure="やせ";
}
System.Console.Write("あなたのBMIは[");
Console.Write("{0,f1}]で",bmi);
Console.WriteLine("[{0,0}型]です",Figure);
}
このようになっています。
どうすれば四捨五入してくれるのでしょうか。
ヒント 四捨五入 c# で検索…
検索を便利に使おうね。
{0:f1}
{0:0}
Winアプリ作成中です。
テキストボックス入力時に、「xxxxxxxxx」と打ったら
自動的に「xxx.xxx.xxx」となるようにしたいのですが
どうしたらいいかまったく思い浮かびません。
検索ヒントだけでもご助言頂けると助かります。宜しくお願いしますー
表示をそうしたいのか、スペースを挿入したいのかどっち
Changeイベントごとに内容取得して、フォーマット変えて中身いじれば
いいのではなかろうか。
>659
表示したいと思っています。
私の言葉が足りなくて申し訳ないです。
>660
一度やってみますね。助言ありがとうございました!
もし.NET 2.0だったらMaskedTextBoxを普通に使うだけ…
とはちがうの?
ユーザが「123456789」と打ち込んだ際に
自動的に「123.456.789」または「123/456/789」というように、
3桁ごとに区切りを入れたいのですー
表現が悪くて誤解を招いてしまい、申し訳ないです。
ありがとうございますー
まさにそのために存在するのがMaskedTextBoxなんじゃないのか。
>>618 >>635 Win32のGetNextWindowを呼ぶとZオーダー順にウィンドウハンドルを返してくるので
順番に付き合わせればわかると思います。使い方は面倒くさいから調べて。
Control.FromHandleとかいうのも便利かもしれません。
GetNextWindowじゃなくてGetWindowだった。
GetNextWindowはヘルプには出てくるけどuser32.dllにないようだ。
そういえばEnumChildWindowsというのも思い出しました。
酒飲みすぎてふらふらっとC#desukaこのすれたいは
>>618 WinFormsで分からないことがあったらとりあえず、MSDNの.NET Framework クラス ライブラリで
対象のクラスのパブリックプロパティ・パブリックメソッドの説明を読み、それで実装できなければ
Win32APIの処理で実装できるか探す。
それでも分らないときに聞いた方がいいと思うよ。他人からレスがくるまで開発が遅れるのは無駄
だから。
ListBoxで背景を黒、文字を白、選択時背景を青にする場合
private void listBox1_DrawItem(object sender, DrawItemEventArgs e){
e.Graphics.FillRectangle(Brushes.Black, e.Bounds);
if(e.State == DrawItemState.Selected)
e.Graphics.FillRectangle(Brushes.Blue, e.Bounds);
Brush myBrush = Brushes.White;
Font myfont = new Font("FixedSys", 10);
e.Graphics.DrawString("あほ"
, myfont,Brushes.White,e.Bounds.X,e.Bounds.Y,StringFormat.GenericDefault);
e.DrawFocusRectangle();
}
こんな感じでやると、選択時背景色の青の表示が上手くいかないんですが……。
スクロールさせている間は選択アイテムの背景は青になるんですけど、通常状態では黒のまま。どういう方法が良いのでしょうか?
'System.Net.Dns.Resolve(string)' は古い形式です
と、コンパイル時に警告が出たんですが、代わりに何を使えば良いんでしょうか?
大量のデータをFormに表示させたり計算したりしたいのですが、
TextBoxで処理をしようかと思い、作業をしていました。
TextBoxが200個を超えた頃からTextBoxの名前を変更するのにも遅くなってしまいました。
ひょっとしてTextBoxを多数並べるよりもいい方法があるのでしょうか?
Labelも考えたのですが、Borderの部分が固定できずに挫折しました orz
MSDN見るまでもなく警告メッセージに書いてあるんだが
>>671 Formsは描画にCPUリソース大量に消費するからコントロールを多数配置するのは厳禁だよ。
Excelみたいなスプレットシートを実装したいのかな?
677 :
671:2007/03/02(金) 18:06:20
>>675 リストボックスは使ってないです。
使った方がスマートなんですか?
>>676 Excelみたいなものが実装できるのが一番の理想です。
ある行の背景に色をつけたりとかできるならなんですけど…。
現在はTextBoxを使っていてデータを表示する際にはループで計算したものを
貼り付けさせてます
リストビュー使えよ
680 :
671:2007/03/02(金) 18:15:09
>>678-679 リストビューとDataGridどちらかでやるのが一番のような気がしてきました。
(完全に頭の中から抜け落ちてました)
DataGridで頑張ってみようかと思います。
(特定の行に色のつけ方で詰まりそうな予感が…orz)
お答えいただいた方々、ありがとうございました。
ListView的なコントロールならCodeProjectとかに多機能なやつが色々ある。
683 :
デフォルトの名無しさん:2007/03/02(金) 22:35:41
ToolStrip使ってるんですが、あるところではマウスでつまんで動かせるのでしたが、
別のところでは動かせない状態でした。どっちもToolStripPanelには置いてあるのですが、
両者のプロパティの差は無いように見えます。何かを操作してどこであっても動かせる
ようにすることはできるでしょうか、
またToolStripPanel以外のPanelなどに置いた場合にも動かせない状態になっていましたが、
ToolStripは必ずToolStripPanelやToolStripContainerにおくべきでしょうか。よろしくお願いします。
別のところに置かなければ良いんじゃね
685 :
683:2007/03/02(金) 22:59:32
>>684 別のところとは別のフォーム(正確には別のユーザーコントロール)の中という意味でした。
最初に使ったところでは初めから動かせていたので動くのが普通なのだと思ったのですが、
あるとき別のユーザーコントロールを作っておいてみると、そこでは動かせなくなっていました。
ToolStripというのは、動かせるのがデフォではないのかと初めて気が付きました。
2つほど質問させてください。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=23085&forum=7 ここにあるのと同じことをしようとしたのですが、ここだとハンドルの取得方法が
FindWindowで取得するようになっています。しかし、ウインドウタイトルがしょっちゅう
変わるのでFindWindowが使えません。
このような場合、ウインドウのハンドルはどのように取得すればいいでしょうか?
また、Messageを取得できたとしても、
>st = (COPYDATASTRUCT)m.GetLParam(typeof(COPYDATASTRUCT));
の所でSEHExceptionを吐いて止まってしまいます。これは何が原因なのでしょうか?
Process.GetProceses とか Process.GetProcessesByName とか
EnumWindows とかの Win32API を使うとかもある
SendMessage でブロードキャストして応答を待つとか言う手もある
後者はなんか変なコトしてるんだろ
>>687 ありがとうございます。
GetProcessByNameを試したのですが、ここに投げたMessageは
どこに行くのでしょうか?メインウインドウや他のウインドウには
届いてないみたいですが…
後者は、日本語が原因っぽいです。
ここってどこよ?
あとエラーはちゃんと調べろ。SEHException なら ErrorCode 出るだろ。
超初歩的な質問だと思いますが、ボタンを押した時にグラフィックを描画するために
OnPaintメソッドを呼びたいのですが、引数のPaintEventArgsとかは何を
渡せばいいんでしょうか。それともこの描画方法は間違ってますか
>>690 OnPaintの中に書いた内容を実行したいって話なら、その中身を
まるまる一つの別メソッドにして、OnPaintとそのボタン両方から
呼び出すようにしたら?
間違ってる。
そもそもOnPaint等のOn〜メソッドは、プログラマが自分で呼ぶものではなく、システムによって呼ばれるのを待つもの。
描画をおこなうべきタイミングでOnPaintが呼ばれるので、その中にプログラマがやりたい描画処理を記述しておく。
間違ってるように思うな。
OnHogehoge は呼ぶもんじゃなくて呼ばれるもの。
再描画して欲しいなら Invalidate を呼べばシステムが OnPaint を呼び出してくれる。
694 :
693:2007/03/03(土) 00:50:56
だだかぶーり orz
>>690 ボタンのイベントハンドラがInvalidate()を呼び出してOnPaint()を実行する。
MSが推奨するイベントドリブンでいいと思うけど
696 :
695:2007/03/03(土) 00:54:09
>>またかぶーり orz
まあ、回答者の意見は一致してるってことで。
Invalidate()したあとUpdate()すれば可及的速やかに再描画が起るぞ。
PaintEventArgs クラスをMSDNで調べればいいんじゃないの?
実際には、PaintEventArgsクラスをnewして自分で作る。
newするには、コンストラクタに描画対象の、Graphicsと描画領域の指定をすることになる。
OnPaintという関数にこだわらなければ、
そこのサンプル見れば、PaintEventArgsを貴方が作らなくていい例がある
(pictureBox1.Paintのあたりを見て)
700 :
618:2007/03/03(土) 01:03:09
>>668 あのー学生であそんでいるだけなんですがー
>>699 OnPaintはイベントハンドラだからをコードでよぶべきでないと。
このスレ、初心者用っていうより、教えたがり屋用スレだなw
俺ならいくら初心者用スレっていってもこんな低レベルなこと知らない奴は、
それは知らないんじゃなくて単に知る気がない奴だと判断して放置するが。
こんなのネット上にだって解説してるところは複数個所あるだろ
放置できずに口出してるじゃねえかよw
ネット上じゃ PictureBox にわざわざご丁寧に Paint イベントで描画する方法を教えてくれるんだぜ?
>>702 教えることにより、自分の知識の整理ができるから教えている。
教えたがらないプログラマーが多いことがむしろ残念なことだ。
×教えたがらないプログラマーが多い
○教えることができないプログラマーが多い
>>700 お前さん、くだらない揚げ足取りをする口はあっても
回答くれた人間に礼をいう口は持ってないんだな
理解していないプログラマーは教えることもできない。
>>701 ああ、ごめん
>>690さんには不適だね。
上の指摘は理解してるつもりだけど、
アプリ上からイベント発生させたい場合とか、
On〜をよぶ必要がある場合もあるんじゃないかと思ってたんだけど。
例えば、イベントPaintに+=で複数のメソッドを登録した場合とか
710 :
618:2007/03/03(土) 01:28:00
>>707 えらそうな奴に教えを貰っても
全然感謝の気持ちは得られない。
そもそもすでに解決済みだったし。
>>710 なんでもいいが、教える側が下手にでることはないと思うが。
>>710 YOU TO LeeEEEEEEEEEEEEEEE
まあ
>>618みたいな廃人に向かって何か言ってみてもそれはきっと無駄だろう
714 :
618:2007/03/03(土) 01:52:03
>>713 その手の内容は心の中で思うもので
決して書き込んで人様に見せるものではないよね。
解説してみて得意げになりましたって自虐的にアピールしてこっちが恥ずかしくなる。
>>709 イベントへのハンドラ登録は、本来
「ハンドラをイベントを持つコンポーネント・コントロールに永続化する事」
別の使い方をするのは一人で開発するなら問題ないけど、大規模になると
混乱のもとだよ。
716 :
690:2007/03/03(土) 02:11:24
みなさん回答ありがとうございます。
OnPaintメソッドについて調べてみても、オーバーロードのことばかりで
呼ぶ記述がなかったので悩んでたのですが、やはり直接呼ぶのは
ダメなんですね。
ちょっと考えたら、Paintイベントに登録するハンドラと、ボタンハンドラで
同じメソッドを呼べば簡単に実現しますね
あとInvalidate()についても調べてみます。どうもでした
ジョアンヌ、そっちへ逝っちゃだめだー!
718 :
690:2007/03/03(土) 02:30:46
あ、ハンドラとして同じメソッドを登録するのではなくて、
ハンドラから同じ関数を呼ぶってことです
でもやはりInvalidate()メソッド使ったほうがよさそうです
>>690 もう大体理解できたかもしれないけど、.NET のコントロールというのは、自分自身を
描画する責任は負っているけど、いつでも好き勝手に描画をしていいわけじゃないのね。
.NET Framework が、必要に応じて、「お前の再描画が必要になったので描画しる」と
命令するわけ。
OnPaint() メソッドというのは、その命令を受ける窓口として存在するものなので、
そこに自分で命令をするのはお門違いということ。
で、Invalidate() メソッドというのは、.NET Framework に対して、「再描画命令を
下してください」とお願いするためのものと思っておけばおk。
720 :
671:2007/03/03(土) 09:09:11
>>681-682 お礼が遅くなりました。ありがとうございます。
参考にさせていただきます。
721 :
686:2007/03/03(土) 10:34:09
朝起きてみたら額にスペースキーが orz
>>689 エラーコードは-2147467259でしたが、文字列に日本語が含まれてると
発生するようです。
722 :
デフォルトの名無しさん:2007/03/03(土) 12:01:50
.Net FrameworkのListViewについてですが、
以下について質問です。
@サブアイテムのみを選択する方法ってありますか?
A@の状態で、サブアイテムのラベルを編集する方法はあるでしょうか?
どういうことをやりたいのかというと、
使い方的にはDataGridみたいな感じなのですが、
DataGridだと変に機能が手厚かったり、微妙に操作しにくいので、
リストビューをセルのように扱うことはできないかなと思いまして
質問させていただきました。
ない。クリックされたらテキストボックスを重ねて表示するとかそういう細工が必要。
codeproject とか漁ればその辺の拡張したコントロールが見つかりそうな気もするが。
724 :
デフォルトの名無しさん:2007/03/03(土) 12:09:20
>>723 ありがとうございます。やっぱないですか・・・。
codeprojectをちょっと調べてみます。
なかったら自分で作ってみます・・・。
どちらにしろ、FormsはOrcas(.NETFramework3.5)でWPFに移行が当たり前になるから、
あまり深入りしないほうが賢明だと思うよ。
ASP2.0はそれほど大きな変更はしばらくないから使っていてもいいけど。
WindowsアプリはMFC・WTL/ATL・FormsはWPFへ、WebアプリはASP2.0を使用
これが世の中の流れになる。
*注 WebアプリはJAVA+Ajax・JAVA+FlexなどMS以外の選択肢が多数あるけど
世の中はそんなスイッチの入り切りのようにかわらないんだよボク
っていうか、その発想って精神病んでる奴の発想だぜw
どうせ死ぬんだから刹那的に生きようっていう例の奴だな
>>726 それがスイッチのように切り替わるのがWindowsOSなんだけど。
MSはすでに98まで切り捨ててるし、MSがOS上でサポートしなくなったら
移行しなければサポート切れのOS上でアプリ動かすことになるよ。
そしていつまでも残る Win2k
729 :
デフォルトの名無しさん:2007/03/03(土) 14:12:30
そしてVB6の新規開発案件に投入される漏れ。
98って何年前だ。
XPも期限延びなかったか?
切り替わるのはWindowsであって世の中ではないのだよ
WPFにはなかなか変わらないと思うよ。
xamlも面白いけどそれだけって感じ。
英文読んでるけど関係代名詞や接続死のおかげで意味が分かり辛いorz
WPFは2000のサポート切れてから普及するだろうから、まだ切り替えにはならないとは思うけど。
XPとVistaがメインの環境になったら開発生産性や開発者とデザイナーの分業を推進するために
Windowsアプリのリプレースでは一番の候補にあがることは確実ではあると思う。
ただ、3Dグラフィック処理については軽量化とプログラミングが容易にならないと普及しない。
XPのサポートすら切れてVsitaのみくらいにならないと無理じゃないか?
既存のXPのマシンってあんまりビデオカードの性能いいの載ってないし。
MFCやFormsをWPFでリプレースする程度のアプリならXPで十分で
ビデオカードの性能高いのはいらないよ。
業務アプリなら3Dいらないから。
>>727 いまだにMFC使ってるところとかあるし
スイッチ切り替えられちゃってんのお前なんじゃね?
>>725 >FormsはOrcas(.NETFramework3.5)でWPFに移行
って何の話かわからないわたし。
とりあえずググれと。
WPFの出始めは、糞UIのソフトがごろごろでてくるんだろうなあ。
>>738 FormsとWPFはMVCモデルでいうところのViewだから競合しているんだよ。
現在、WPFは3Dは重いしバグも多いのは事実だけどOrcasではバグはつぶれてるだろうし。
Formsの問題点はGPUパイプラインをサポートしてないことと余計な描画処理が多すぎるからWPF後は衰退するだけだと思う。
MFCからリプレースというのは、C++ネイティブはDLLヘルやサンドボックスなどのセキュリティ対策がないのも
問題だし、クライアントアプリを配布するのにCDなどに焼いて渡すのも運用管理でも問題がある。
.NETFrameworkでIISサーバからクライアントアプリをClickOnceで配布すればバージョン管理もできるし、
ランタイムの更新もほぼ、自動で行える。
プログラムの容易性だけでなくてTCOを考えるとクライアントがWindowsXP以降限定なら
WPFでClickOnceが一番TCOが低く抑えられるってことが考えられるわけ。
ご高説は結構だがそろそろスレ違い感が否めない
740 のような言説を読むにつけ、
もはや MS はホビーユーザ近辺には関心がないんじゃないかと思わざるを得ない
Vistaでもウリ文句が半透明とフリップぐらいしか出せてないしな
745 :
デフォルトの名無しさん:2007/03/04(日) 00:16:07
文字を縦書きしたいのですが、DrawString() で行なうと
グラフィックアダプターのドライバ依存のためかマウスの
位置がかぶると描画が消える部分ができてしまうのですが、
Labelなどでも実現できますでしょうか。
WPFはFormsの描画の重さを解消する切り札になるんだったら一気に置き換わるんじゃないかなと思う。
>>745 そんな文章書くと日本語でオッケって書かれるよw
>>745 >グラフィックアダプターのドライバ依存
では全然なくて単にPaintイベントで描画してないってオチでしょ?
横書きして同様になったとしてもやっぱりグラフィックアダプターのドライバ依存ですか?
749 :
デフォルトの名無しさん:2007/03/04(日) 01:44:53
>>748 2つモニターがあって、、片方のモニターではそういう現象が起こらず、
もう片方では、同じ部分の描画文字なのに、マウスで一瞬の間部分的に
消されていました。それで、またもう一方のモニターの中に戻すとそういうことは
やはり起こらないのでした。それでどうもグラフィックボードの出力ポート
依存性があるかと思われ、そのように推測したのでした。
それと、やはり縦書きラベルとかはないものでしょうか?
750 :
デフォルトの名無しさん:2007/03/04(日) 01:46:40
>>748 あ、それから確かにPaintイベントの中で描いているのですが、
そうなってしまうのでした。そういうことは普通はやはり起こらないですか?
そんなミエミエのバグがVGAドライバに残ってる可能性は非常に低いと思うけどねw
十分検証した上で言ってるのそれ?
現象が再現できる簡単なコードさらしてみたら?
ダメな奴ほどバグバグ言いたがる法則だと思うよ正直
ClickOnceは業務アプリではなかなか
使いにくいんだよう。
>>751 こんな感じなのですが、どうでしょうか。一応動作自体にはNGはないようです。
やはりアダプタが古いせいではないかと思うのですが・・・。片方のモニターでは
問題がないのです。
Private Panel1_Paint(Object sender, System.Windows.Forms.PaintEventArgs e)
{
Display(drawString);
}
Private Display(String drawString)
{
Graphics g = pnlNowTask.CreateGraphics();
Font fnt = new Font("@MS ゴシック", 9, FontStyle.Regular);
String Format = new StringFormat();
sf.FormatFlags = StringFormatFlags.DirectionVertical;
sf.Alignment = StringAlignment.Near;
sf.LineAlignment = StringAlignment.Near;
g.Clear(Color.FromKnownColor(KnownColor.Control));
g.DrawString(drawString, fnt, Brushes.DodgerBlue, 1.0F, 20.0F, sf);
fnt.Dispose();
g.Dispose();
}
>>752 ちなみにそれって、CodeAccessSecurityの関係でですか?
できればもう少し詳しく。
あ、正確には Panel1_Paint() は Panel1_Paint_Paint() でした、スマソです。
>>755訂正 Panel1_Paint_Paint() ==> Panel1_Paint()
アーまた間違えた、Panel1_Paint_Paint() ==> pnlNowTask_Paint() でした。。。
もう寝た方がいいんじゃないか。
>>758 そうですね。もう寝ますね、、それで寝る前にもう一つ質問書かせてください。
.NETではDataGridViewをデータベースとは無関係にただの表形式表示として
使っても別に構わないでしょうか。まだあまり調べてないままなのですが、
単純に以前のMSFlexGridの代用みたいに使えるものでしょうか。
それではまた明日お願いします。
>>759 そちらもまた明日教えてください、ではまた。
>>753 それ本当に実行して確認したコード?
実行時に例外でると思うけどなあ。。
とりあえずPaintイベントでもらったGraphicsをDisposeしちゃダメだろうw
764 :
デフォルトの名無しさん:2007/03/04(日) 12:15:14
>>753 プロパティの値に応じてちゃんとダブルバッファリングされるように、e.Graphics使ったほうがいいよ。
ああゴメン。
Graphicsを引数でもらってるんじゃなくて、
PaintイベントだろうがなんだろうがCreateGraphicsしてるのか。
よけい酷いじゃんw
767 :
デフォルトの名無しさん:2007/03/04(日) 12:38:12
TcpClient tcp = server.AcceptTcpClient();
tcpから接続元のIPを調べる方法を教えてください
想像
((IPEndpoint)tcp.Client.RemoteEndpoint).Address
>>763 いや、実行時エラー以前にコンパイル通らないと思うよw
>>768 同じパソコンでクライアントとサーバーを試しているせいか127.0.0.1が返って来ましたorz。
ありがとうございます。
771 :
デフォルトの名無しさん:2007/03/04(日) 13:31:05
>>763-766 どうもありがとうございます。
そこで e.Graphics を使ってもやってみましたが、
ただどうも結果は同じようなのです。
もともとOKのモニターでは問題なくできますが、問題だった方の
モニターではやはり描画した直後のマウスカーソルのかぶった
ところだけ消えてました。
やはりこのボードがずいぶん古いのかなと思います。
この問題の方のモニターでは、テキストボックスやコンボボックスの
テキスト表示部でも、その枠線の一部分がマウスで消えてしまう現象が出てました。
やはり.NETのクラスで使っているグラフィックスの機能がそのポートを
制御しているドライバーのマウスカーソル制御と干渉するのではないかと。。
これら以外の表示では今のところは大丈夫ですが・・・
>>769 ビルドは問題なくできてました。
e.Graphics使う方でも、引数で渡してやりましたがビルドできていました。
>>762 こちらもありがとうございました。
教えて頂いたMSDNを含め調べてみます。
この感じですと、CSVファイルとかにも直接対応して読み込めるようなので
使えそうですね。
Part14の
>>27です。
DragEnterイベントに処理は書いているんですけどね・・・。
AllowDropプロパティをtrueにしてもDragEnterイベントがこないのです(´・ω・`)
書き忘れてましたが私の環境は
Windows XP Pro + VS2005SE
です。
だからコード晒せよ
AllowDropプロパティを間違いなくtrueにしているなら、あとはイベントハンドラをイベントに登録してないとかかな。
イベントハンドラをどこぞからコピペしてこなかったか?
フォームのプロパティからDragEnterイベントハンドラを生成してみてはどうかな。
778 :
デフォルトの名無しさん:2007/03/04(日) 15:53:50
つい最近まで、C#を「シーナンバ」って読んでたよ
シャープだったんだ
C++の ++を斜めにずらして重ねると #
なんつって
780 :
775:2007/03/04(日) 15:58:49
>>776 >>777 簡単にサンプル作ったのだけどやっぱりイベントが来ない・・・。
何か勘違いしてるんでしょうか?
class TestForm : Form
{
public TestForm()
{
this.DragEnter += new DragEventHandler(FormTest_DragEnter);
this.DragDrop += new DragEventHandler(FormTest_DragDrop);
this.AllowDrop = true;
}
void FormTest_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop) == true &&e.Data.GetDataPresent(DataFormats.Text) == true ) {
e.Effect = DragDropEffects.All;
} else {
e.Effect = DragDropEffects.None;
}
}
void FormTest_DragDrop(object sender, DragEventArgs e)
{
string[] fileNameList = (string[])e.Data.GetData(DataFormats.FileDrop, false);
if (0 < fileNameList.Length) {
MessageBox.Show(this, fileNameList[0]);
}
}
}
781 :
775:2007/03/04(日) 16:01:16
スペース全部消された・・・。
class TestForm : Form
{
public TestForm()
{
this.DragEnter += new DragEventHandler(FormTest_DragEnter);
this.DragDrop += new DragEventHandler(FormTest_DragDrop);
this.AllowDrop = true;
}
void FormTest_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop) == true && e.Data.GetDataPresent(DataFormats.Text) == true ) {
e.Effect = DragDropEffects.All;
} else {
e.Effect = DragDropEffects.None;
}
}
void FormTest_DragDrop(object sender, DragEventArgs e)
{
string[] fileNameList = (string[])e.Data.GetData(DataFormats.FileDrop, false);
if (0 < fileNameList.Length) {
MessageBox.Show(this, fileNameList[0]);
}
}
}
FileDrop と Text が両方登録されてる事ってあんまり無いような気がするが
FormTest_DragEnterの
if (e.Data.GetDataPresent(DataFormats.FileDrop) == true && e.Data.GetDataPresent(DataFormats.Text) == true )
↓
if( e.Data.GetDataPresent( DataFormats.FileDrop ) || e.Data.GetDataPresent( DataFormats.Text ) )
にしてみそ
コードを丸ごとコピペして試したけど、ちゃんとイベントは発生する。
ひょっとすると、イベントはちゃんと起きてるけど、if 文の条件式が絶対に成り立たないから、
イベントが発生してないと勘違いしちゃってるんじゃないのかな。
e.Data.GetDataPresent(DataFormats.FileDrop) == true だけで試してみ。
786 :
775:2007/03/04(日) 16:08:14
>>783 やってみましたがダメでした・・・。
DragEnterイベント自体が来ないです・・・。
DragEnterイベント自体が発生していないことをどのようにして確認してる?
エスパー4級だが、OnDragEnterをオーバーライドして、base.OnDragEnterを呼んでないと予想。
789 :
775:2007/03/04(日) 16:12:53
>>787 DragEnterイベントのif文にブレイクポイントを設定してデバッグで実行しています。
Loadイベントではブレイクポイントで止まるのでDragEnterイベントは発生してないとしか・・・。
790 :
775:2007/03/04(日) 16:14:28
>>788 OnDragEnterメソッドはオーバーライドしてません・・・。
protected override void OnDragEnter(DragEventArgs drgevent) {
base.OnDragEnter(drgevent); // <- ここでブレークしたらどうなるよ?
}
792 :
775:2007/03/04(日) 16:17:27
>>791 やってみました。
止まりません・・・。
もしかして私の環境が壊れてる?(´・ω・`)
大穴
TestForm じゃなくて Form を Application.Run していた
まさかとは思うが、実は同じプロジェクト内にFormっていう変なクラスがあって、
そっちを継承しちゃってるとか。
みんなよくそんだけ色々と思い付くなあ
796 :
775:2007/03/04(日) 16:22:42
まさかと思って新しいプロジェクトを作ってやってみたけどダメみたい・・・。
フォームの呼び出しもApplication.Run(new TestForm());としてるよ。
どうしてだろ・・・(´・ω・`)
ああ、でも OnDragEnter がちゃんとオーバーライドできるなら、ベースクラスが間違ってる説はないか。
798 :
775:2007/03/04(日) 16:26:22
>>797 クラスの定義を
class TestForm : Form
から
class TestForm : System.Windows.Forms.Form
に変更してみた。
やっぱりダメです・・・。
DEBUGでやってないって落ちはないよね
一応確認しとくけど、エクスプローラとかでもドラッグアンドドロップができなくなってる、ってことはないよな。
801 :
775:2007/03/04(日) 16:28:45
>>799 コンストラクタ等ではブレイクポイントで止まることを確認しているのでそれはないです・・・。
ファイルをドラッグしたときにコピーマークが出てないって事なのか?
program.cs
using System;
using System.Windows.Forms;
public class Program {
[STAThread] public static void Main() {
Form f = new Form();
f.AllowDrop = true;
f.DragEnter += new DragEventHandler(Enter);
Application.Run(f);
}
private static void Enter(object sender, DragEventArgs e) {
MessageBox.Show(e.Data.GetDataPresent(DataFormats.FileDrop).ToString());
}
}
取りあえずこの辺から行ってみようか。
804 :
775:2007/03/04(日) 16:29:49
>>800 エクスプローラや他のファイルのドロップが行えるアプリケーションが動作しているんのは確認しています。
マウスポインタがフォーム上に差し掛かったとき、ポインタは「止まれ」の標識みたいな奴に変化する?
806 :
775:2007/03/04(日) 16:32:01
>>803 そのコードで実行してみたのですがイベントが来ません(´・ω・`)
>>805 はい。
そのカーソルになります。
807 :
775:2007/03/04(日) 16:33:09
ここまでくるともう私の環境が壊れているとしか思えませんね・・・(´・ω・`)
ためしにPCを再起動してみようか。
MessageBox.Show(typeof(Form).AssemblyQualifiedName + "\n"
+ typeof(global::System.Windows.Forms.Form).AssemblyQualifiedName);
はどうなってる?
>>809 普通なら同じ文字列が2行出るはずやね。
811 :
775:2007/03/04(日) 16:39:15
>> 808
再起動してみます。
>> 809
以下のように・・・。
---------------------------
---------------------------
System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
---------------------------
OK
---------------------------
今、重要なことに気付いたのですが。
このPCには.NET Framework 3.0のランタイムもインストールされています。
これって関係大有りでしょうか・・・?
参照設定のSystem.Windows.Formsのプロパティのパスの項はどうなってる?
イベント来てないって書いてるやん
> このPCには.NET Framework 3.0のランタイムもインストールされています。
> これって関係大有りでしょうか・・・?
.NET3.0でも、System.Windows.Forms.dllは.NET 2.0のものをそのまま参照しているから関係ないはず。
>>811 アセンブリも間違ってないのかー謎だなあ
816 :
775:2007/03/04(日) 16:46:09
再起動しました。
しかし状況変わらずです・・・。
>>812 以下のようになっていました。
C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll
>> 813
それで困っているのです・・・。
>>814 そうですか・・・。
別のマシンで試せないのかな。
あるいは、ExpressEditionを入れてそっちで試してみるとか。
いずれにせよ
if( e.Data.GetDataPresent( DataFormats.FileDrop ) == true && e.Data.GetDataPresent( DataFormats.Text ) == true )
じゃファイルドロップのときtrueにならないぞ
819 :
775:2007/03/04(日) 16:56:40
PCは予備があるのですが98なのです・・・。
ファイル丸ごとUPして丸投げしちゃえ!!
流れ嫁よ…
823 :
775:2007/03/04(日) 17:05:23
もう諦めます・・・(´・ω・`)
OS再インスコだな
まさかFormにイベント作ってるのにコントロールにファイルとか
ドロップしようとしてないよね?
そうじゃないならダメ元でFormのデザイナのプロパティの方に
イベント追加してみ?
訂正:
コントロール→Formに設置したコントロール
例え Dock.Fill なコントロールをはっつけてても Form の DragEnter は発生するよ。
>>827 マジか…
俺の環境も壊れているようです orz
DataGridViewに関してちょっと質問
DataGridView.DataSouce = DataSet.Tables[0];
としてデータ表示をしています
DataGridViewをソートさせDataGridViewをクリックした時に
クリックした場所のDataSetのRowIndexを取りたいのですが
どうすればいいですか?
普通にDataGridViewのRowIndexなら取れるのですが・・・
泥臭い方法なら、DataGridViewRow の DataBoundItem が DataRowView になるんで、
そいつの Row を DataTable.Rows の IndexOf に掛けるとか。
BindingSource 使えばもうちょっとスマートな書き方ができたような気がするが思いだせん。
831 :
デフォルトの名無しさん:2007/03/04(日) 22:30:40
えーっと、縦書きの方は相変わらずなのですが、昨日の
>>752>>759の方は
よろしければ、「ClickOnceは業務アプリではなかなか使いにくい」 のか
教えてください。
ただ実は当方 ClickOnce の意味がいまいちまだ理解できてないわけでしたが
ClickOnce という言葉はあちこちに書いてあるのですが、それが何ものなのかに
ついての単刀直入な説明がなかなか探せないのです。
マイクロソフトではよくあること
DataGridViewについて質問です。
Rowのヘッダーにテキストを設定することは可能なのでしょうか?
もし可能ならば方法を教えてください。お願いします。
ClickOnceはWebページからワンクリックでクライアントアプリをインストールする機能
簡単に説明するとこんな感じ。
836 :
834:2007/03/04(日) 23:15:23
解決しました。
>>784 C++じゃなくてC++++が由来だとか。
正解とかなんでもいいよ
XNAなんて"Xna is Not Acronym"だぜ?
GNU以上にアフォだな
841 :
デフォルトの名無しさん:2007/03/05(月) 01:40:00
>>835 そういうことだったのですか、、
ありがとうございます、おかげでやっとわかりました。。。
.NETアプリケーションはZipにしておいて勝手にダウンロードさせて
自分のLocalのすきなところに展開してExeファイルをアイコンにして
もらえばそれでいい、ぐらいにしか考えてなかったので、
何をクリックするのかまったくわからないでいました><。。。
ただ、そうだとしますと、「ClickOnceは業務アプリではなかなか使いにくい」
という意味がますますわかりませんが、何か問題があるのでしょうか?
今後のことを考えるとちょっと気になるのですが。
>>842 Webサーバで認証されたユーザだけダウンロードすれば、業務アプリで使うのに問題ないはずだけど、
使えない理由が俺にもわからない。
自分に理解できないもの使いこなせないものをいろいろ理由をつけて
使えないとか言い張る人間はどこにでもいるものだ。
大方普通のインストーラを作りたかったのにそういうものではなかったということかな。
初心者な質問なのですが。。。
int i = 3000;
↑を 3,000 の様に桁区切りで表示する際には
i.ToString("###,###");
と文字列にする以外方法はありますでしょうか?
(理想としてはintのままにしておければ計算する際にわざわざまたintにする必要がないなと思いまして)
何に困っているかがわからない
ToStringは文字列を返すが、iそのものは変わらんぞ?
ClickOnce実際に試したことあるなら何でかって分かりそうなもんだが。
849 :
845:2007/03/05(月) 12:03:27
すっごいお馬鹿な質問をしてしまいました。
なんか混乱してて…。確かにiは変わりませんよね><;
質問の仕方を間違っているのですが、上手く説明できません。
整理して出直します。お手数をお掛けしました