ふらっとC#,C♯,C#(初心者用) Part44at TECH
ふらっとC#,C♯,C#(初心者用) Part44 - 暇つぶし2ch300:デフォルトの名無しさん
09/09/03 15:59:22
>>291-299
ありがとうございました。

301:デフォルトの名無しさん
09/09/03 18:12:02
質問です。

TabPageとそれに格納されているコントロールを複製して、
同じ挙動・レイアウトのTabPageを作成したいのですが、
どのような方法がありますか?

302:デフォルトの名無しさん
09/09/03 18:37:47
山田 優   A
山本 一太     B
山田 太郎     C

テキストボックスで名前とアルファベットの間にタブを入れると
上のようになるんですが、メモ帳やテキストエディタにコピペすると
きちんと等長になります
テキストボックスコントロールでタブを等長にするにはどうすればいいですか?

303:302
09/09/03 18:42:29
自己解。
フォントが非等長でした。
すんまそん。

304:デフォルトの名無しさん
09/09/03 19:53:15
等幅と言ってくれ寒気がする

305:デフォルトの名無しさん
09/09/03 20:02:56
プロポーショナル・非プロポーショナルという方が実際的な気がする

306:デフォルトの名無しさん
09/09/03 21:24:47
ああ、そうでしたね・・・

細かいこと気にするなよ兄弟

307:デフォルトの名無しさん
09/09/03 22:04:11
>>301
やりたいことがよくわかんないんだけど。
ユーザコントロールにその「タブに格納されているコントロール」群を貼り付けて、
そのユーザコントロールをあちこちのタブページに貼り付けるんじゃダメなの?

308:デフォルトの名無しさん
09/09/03 22:45:25
質問です。

サブスレッドにてメインスレッドのListvViewコントロールから取得したListViewItem似たいし
処理を施してからメインスレッドのListViewに返したいと思っています。
Invokeする際にIndexを取得しておく方法を考えていますが、Itemを返すときに取得した位置に
間違いなく返す方法があれば教えてください。

309:デフォルトの名無しさん
09/09/03 22:48:55
仮想リストビュー便利よね

310:デフォルトの名無しさん
09/09/03 22:48:55
C#からネットの切断を行うことはできますか?
コントロールパネルのネットワーク接続から「無効にする」を選択した状態を再現したいです。
アンセーフなものでも構わないのでご教授いただけませんか

311:デフォルトの名無しさん
09/09/03 22:54:09
>>308
それ日本語かよ。

312:デフォルトの名無しさん
09/09/03 23:28:50
>>310
ネットワークデバイス(ドライバ)を無効化すれば?

>>308
落ち着け

313:301
09/09/03 23:35:03
>>307
それでやりたいことはできそうです。
ありがとうございました。

314:デフォルトの名無しさん
09/09/03 23:42:15
マザーボードの種類がLGA1366よりLGA1156が圧倒的な速さで出回っているのは
これからのCPUの割合がそうなっちゃうからなのか?
メモコンとかで劣るのに。
まじで?

315:314
09/09/03 23:43:48
Janeのタブが悪戯しました。
代わりに誤爆したことを謝ります。
m(´。。)mペコリー

316:デフォルトの名無しさん
09/09/03 23:45:16
おちゃめさんなJaneだなぁ

317:デフォルトの名無しさん
09/09/04 00:16:01
俺もJaneちゃんにいたずらされたいです。
誰かコーディングしてください!

318:308
09/09/04 00:21:06
すいません。やりたいことは

delegate GetItemDelegate();
delegate SetItemDelegate();

private void Button1_Click(sender, e)
{
Thread t = new Thread(new ThreadStart(Send));
t.Start();
}

private void Send()
{
Invoke(new GetItemDelegate(GetItem)); ←これを
~処理~
Invoke(new SetItemDelegate(SetItem)); ←もとの位置に戻したいが上手い方法がわからない
}

private ListViewItem GetItem(){~処理~}

private void SetItem(ListViewItem lvi){~処理~}

319:デフォルトの名無しさん
09/09/04 00:40:46
ListView.Itemsに含まれてるListViewItemは別スレッドで操作できないから
一旦ListView.Itemsから削除することになるけど
適当にListViewItemと元のIndexを持ったクラスでもやりとりすれば良いんじゃね
仮想リストビュー使った方が良いと思うけどね

つか元の位置に戻したいとかよく分からん GetItemの返値捨ててるし

320:デフォルトの名無しさん
09/09/04 00:46:30
やはり>>318の言いたいことはさっぱり理解できんね。
恐らく本人も自分が何をしたのか、よく理解できてないんだろう。

いずれにせよ、自分を考えを整理できない人間が、かつ説明能力も欠如してると
最強の「日本語でおk」なフィーリング溢れる文章が出来上がる、と。

321:デフォルトの名無しさん
09/09/04 00:52:08
>>312
ありがとうございます。
devconというものを使えばできそうなのはわかったのですが
再配布禁止なようなので、できればAPIなどで実現したいです。

ドライバの無効化はどのように実現するものなのですか?

322:318
09/09/04 01:04:09
>>319
なんも見ないでおおざっぱに書いただけなので細かい部分は勘弁してください
仮想モード調べてみたけどソートとかめんどくさそうで・・・

323:デフォルトの名無しさん
09/09/04 01:07:01
別スレッドで処理せにゃならんほど大量のListViewItemねぇ

324:312
09/09/04 01:08:13
>>321
私は組込屋ではないので、ドライバの知識はないです
ドライバなんで、もしかしたらWindowsAPIやDLLの知識が要るかもしれないです

参考になるかはわかりませんが
URLリンク(okwave.jp)

325:318
09/09/04 01:25:10
>>319
今ListViewに実装してるソータークラスを改良したらなんとか行けそうな気がしてきたんで
仮想モードを使う方法とインデックス保持専用クラスをやりとりする方法を両方検討してみます
ありがとうございました。

326:314
09/09/04 01:37:44
>>325
気になって調べてみた。
こういったネットワークとかは経験上コマンドラインでなんとかなると思って調べてみると色々でてきた。
自分も試したことないから何とも言えないけど、コマンド関係を調べて見てはどうでしょうか、
URLリンク(kgo.dtiblog.com)

327:デフォルトの名無しさん
09/09/04 01:39:01
>>326
Janeのコテハン記憶にやられた。
かまって欲しいのか、そうなのか。

328:デフォルトの名無しさん
09/09/04 01:42:48
Win32_NetworkAdapter の Disable() メソッドでいいだろ。

329:デフォルトの名無しさん
09/09/04 10:13:37
マルチスレッドについてです

どぼんさんところのサンプルを改造しててコンパイルエラーがでました

キーワード"base"は静的メソッドでは使用できません。

BeginInvoke・EndInvokeを使ってメインスレッドで処理しなければいけない

ような気がするんですがどう書いていいかわかりません。

よろしくお願いします。

次でコードを載せます。

330:デフォルトの名無しさん
09/09/04 10:15:05
  public partial class RequestTextBox : TextBox
  {
    public GMapStaticParameters GSParam = new GMapStaticParameters();

    //受信したデータを入れておくMemoryStream
    private static System.IO.MemoryStream requestData;
    //受信したデータを入れるバッファ
    private static byte[] bufferData;

    //html.Textの取得
    public static void GetMap()
    {
      //HttpWebRequestの作成
      System.Net.HttpWebRequest webreq =
        (System.Net.HttpWebRequest)
        System.Net.WebRequest.Create("URLリンク(www.hogehoge.com)");

      //非同期要求を開始
      //状態オブジェクトとしてHttpWebRequestをわたす
      IAsyncResult r =
        (IAsyncResult)webreq.BeginGetResponse(
        new AsyncCallback(ResponseCallback), webreq);

    }

    


331:デフォルトの名無しさん
09/09/04 10:16:25
  //非同期要求が終了した時に呼び出されるコールバックメソッド
  private static void ResponseCallback(IAsyncResult ar)
  {
    //状態オブジェクトとしてわたされたHttpWebRequestを取得
    System.Net.HttpWebRequest webreq =
      (System.Net.HttpWebRequest) ar.AsyncState;
    //非同期要求を終了
    System.Net.HttpWebResponse webres =
      (System.Net.HttpWebResponse) webreq.EndGetResponse(ar);
    //ストリームを取得
    System.IO.Stream st = webres.GetResponseStream();

    //データを読み込むための準備をする
    requestData = new System.IO.MemoryStream();
    bufferData = new byte[1024];
    //非同期でデータの読み込みを開始
    //状態オブジェクトとしてStreamをわたす
    IAsyncResult r = (IAsyncResult) st.BeginRead(
      bufferData, 0, bufferData.Length,
      new AsyncCallback(ReadCallback), st);
  }


332:デフォルトの名無しさん
09/09/04 10:17:28
  //非同期読み込み完了時に呼び出されるコールバックメソッド
    private static void ReadCallback(IAsyncResult ar)
    {
      //状態オブジェクトとしてわたされたStreamを取得
      System.IO.Stream st = (System.IO.Stream)ar.AsyncState;
      //データを読み込む
      int readSize = st.EndRead(ar);
      if (readSize > 0)
      {
        //データが読み込めた時
        //読み込んだデータをMemoryStreamに保存する
        requestData.Write(bufferData, 0, readSize);
        //再び非同期でデータを読み込む
        IAsyncResult r = (IAsyncResult)st.BeginRead(
          bufferData, 0, bufferData.Length,
          new AsyncCallback(ReadCallback), st);
      }
      else
      {
        //データの読み込みが終了した時
        //データをデコードして表示する
        System.Text.Encoding enc =
          System.Text.Encoding.GetEncoding(51932);
        base.Text = enc.GetString(requestData.ToArray());
base.Refresh;
        //閉じる
        st.Close();
        requestData.Close();
      }
    }
  }
インデントは全角スペースです

333:デフォルトの名無しさん
09/09/04 10:21:26
よく読んでないけどとりあえずstaticは論外

334:デフォルトの名無しさん
09/09/04 10:31:50
ありがとうございます
staticを外すと

静的でないフィールド、メソッド、またはプロパティ 'ResponseCallback(System.IAsyncResult)' で、オブジェクト参照が必要です。

と言われますた。

335:デフォルトの名無しさん
09/09/04 10:40:10
そう良かったね。

336:デフォルトの名無しさん
09/09/04 10:46:13
ざまぁね~な

337:デフォルトの名無しさん
09/09/04 11:40:15
まだstatic残してるだろ

338:デフォルトの名無しさん
09/09/04 11:47:44
解答する気もないのに煽る糞がまた増えてきたな

339:デフォルトの名無しさん
09/09/04 11:52:13
自己紹介お疲れ様です。

340:デフォルトの名無しさん
09/09/04 11:55:46
>>337
天才!

無事コンパイルは通りました。ありがとうございました。

ただ、これをこまま実装した場合、メソッド呼び出しが連続したときなどの対処を考える必要があると思うのですが
連続した場合は動いているスレッドを破毀したい場合どのように改良していくべきでしょうか?
ロードマップだけでもお示しください。何とぞ。

341:デフォルトの名無しさん
09/09/04 12:12:15
ReadCallbackは非同期で呼び出されるんじゃないの?
その中でコントロールを触るにはControl.Invokeが必要

342:310
09/09/04 12:28:30
>>324,>>328
ありがとうございます。

いろいろ調べてみたのですが
とりあえずローカルエリア接続から排除するだけでも私のやりたいことを叶えられそうなので
「NetUseDel」を使ってみようと思いました。

しかし、NetUseDelはネットワークドライブからの接続解除について書かれたものが多く
どうやってローカルエリア接続を解除するのかわかりませんでした。

UseNameには「ローカル エリア接続」、「物理アドレス」、「ネットワークカード名」を試してみました。


もはやこちらでお願いするのもどうかと思うのですがご教授いただけないでしょうか


343:デフォルトの名無しさん
09/09/04 12:56:15
>>341
非同期です。Control.Invokeですね。
たぶん実行時エラーが出るとは思ってました。

344:デフォルトの名無しさん
09/09/04 14:50:44
>>341
とりあえず動作確認まで完了できました

ありがとうございました

345:デフォルトの名無しさん
09/09/04 21:11:17
>>342
無理。

346:デフォルトの名無しさん
09/09/04 22:35:46
>>329でございます。

動作確認が取れたところでちょっとハードに重複してスレッドを呼び出してみました。
そうすると、閉じたストリームに書き込もうとしてるぞエラーが出ました。
場当たり的にあちこちlockを使ってみましたがダメでした。

イベントハンドラがメソッドAを呼び出す。
メソッドAがメソッドBをマルチスレッドで呼び出す。
メソッドBはメソッドCをマルチスレッドで呼び出す。
メソッドCは自分の仕事が完了したかどうかチェックしてまだならメソッドCを呼び出す。
完了していたらControl.Invokeを呼び出す。

イベントはスレッド完了を待たずにどんどん発生します。
メソッドBを呼び出された順番で1つづつ実行したいのですが、BeginInvokeでいいでしょうか?
ヒントをひとつよろしくお願いします。


347:デフォルトの名無しさん
09/09/04 22:56:53
EndGetResponseでReponse取得した後はわざわざBeginReadとかする必要は普通ない

> イベントはスレッド完了を待たずにどんどん発生します。
> メソッドBを呼び出された順番で1つづつ実行したいのですが
メソッドBが呼び出された順番でいいのか? メソッドAが呼び出された順番じゃなくて
なんにせよスレッドに順番なんて保証は皆無なので
メソッドBが呼び出された順をキューとかリストとかに保存して
Invokeを呼び出す時に並べてやる必要がある
その辺をマルチスレッドから扱うにはlockとかが必要
あとControl.BeginInvokeじゃ呼び出されるメソッドの順番は保証がない

348:デフォルトの名無しさん
09/09/04 23:54:14
GraphicsのDrawString等を使用してフォントサイズをピクセル単位で指定して描画することはできるでしょうか?
たとえばサイズを20pxとして描画した場合に全角なら幅20px、高さ20px、半角なら幅10px、高さ20pxとなるような

349:デフォルトの名無しさん
09/09/05 00:04:53
>>347
ありがとうございます。以前はリストを保存してタイマーでスレッドをチェックしてスレッドが走ってなかったらリストをひとつ消化
という仕組みにしてましたが、今回はイベントがタイマーより早く発生しそうでどうするか迷ってました。
かなり操作を早くしないとこのエラーはでないし、そこまで操作が早くなるとキューやリストを消化できない弊害がでそうなので
ストリームの状態を確認してエラーが出たら保存作業をスキップさせるように変更します。

経験に基づいた判断はサンプルコードでは得られないものですね。
ありがとうございました。

350:デフォルトの名無しさん
09/09/05 00:08:18
>>348
ペゾルドの本でもじっくり読んでみたら。
偉そうに言ってる俺は拾い読みしかしてないけどw
URLリンク(msdn.microsoft.com)

351:デフォルトの名無しさん
09/09/05 05:33:46
ラジオボタンで、個人と法人のいずれかを選択させ、
個人の場合は、個人の姓名などの情報、
法人の場合は、会社名や代表者などの情報を入れてもらうように
パネルを切り替えています。
しかし、どちらが前面にあっても、タブオーダーは背面のコントロールにまで飛んでいるようです。
これを、背面に隠れている側のパネルのコントロールにタブが飛ばないようにするには
どうする方法が効率的でしょうか。
イベント発生ごとに、各コントロールのタブストップのTRUE FALSE を
1つずつ記述するしか方法はないでしょうか。
よろしくお願いします。



352:デフォルトの名無しさん
09/09/05 05:58:41
個人の場合のパネルも法人の場合のパネルもフォームに貼り付けられてるのか?
選択された方のパネルだけ貼り付ければもう片方にフォーカスが移るはずがないんだが。

353:デフォルトの名無しさん
09/09/05 06:00:00
背面に隠したパネルのVisibleかEnabledをfalseにすればいい

354:デフォルトの名無しさん
09/09/05 06:02:20
隠れている側のPanel.Enabledをfalseにすればいい気もするけど試さずに書き込み。

355:デフォルトの名無しさん
09/09/05 09:50:40
初歩的な質問ですみません
ふだんVBでコーディングしているんですが、今回C#を書いています
そしたら、インテリセンスが不親切です
メソッドを選択しても()がつかない
メソッドの引数候補の情報が出ない
文法エラーが出て修正してもアンダーラインが消えない

こういうものですか?C#って

356:デフォルトの名無しさん
09/09/05 09:58:03
それはC#じゃなくてVSが糞って言いたいんじゃないの?
引数候補の情報や文法エラーは正しく書いていないだけだし。

357:デフォルトの名無しさん
09/09/05 09:59:11
>メソッドを選択しても()がつかない
これは本当に好みの問題。嫌いな人もいる。
>メソッドの引数候補の情報が出ない
出る。
>文法エラーが出て修正してもアンダーラインが消えない
消える。

358:デフォルトの名無しさん
09/09/05 10:02:13
インテリセンスでメソッドを決定するときには,
目的のメソッドが選択された時点でいきなり ( を入力するのがおすすめ。

359:デフォルトの名無しさん
09/09/05 10:05:45
>>351
氏の質問を見て、私も質問をさせていただきたいのですが…。
私は縦横にパネルを6枚ほど敷き詰めて、
それぞれに、約10ずつのコントロールを置いており、
タブオーダーを約50まで設定していますが、
間に項目が追加になりそうなんです。
その場合、追加したコントロール以降のタブオーダーを全てプロパティ画面で手で直さなくてはならないのでしょうか。
表示⇒タブオーダーの画面だと、コントロールが密集しているのでうまくクリックできない状態です。
よろしくお願いします。

360:デフォルトの名無しさん
09/09/05 10:10:00
VBが自動的にブロックや括弧を閉じてくれるのって,VBはEnd Ifとか綴りが多くて面倒だからなんだよね
C系の言語の場合はあまり変わらないので不要。ちゃんとリアルタイムにエラーが表示されるから閉じ忘れも起こらない。

>>359
もうデザイナ使わずにコードでコントロールを作るようにしたら?

361:デフォルトの名無しさん
09/09/05 10:15:51
はい。

362:デフォルトの名無しさん
09/09/05 10:26:02
>>356
いやーそういうつもりはないんですが

>>357
なるほど 好き嫌いや慣れの部分はしかたないですね
>>メソッドの引数候補の情報が出ない
>出る。
>>文法エラーが出て修正してもアンダーラインが消えない
>消える。
もうちょっと悩んでみます・・・

>>358
なるほど!そうさせていただきます

>>360
なるほど・・・ 


文法エラーが消えないのはなぜなんでしょうかねえ
インストールの時の言語選択が原因ですかね?

363:デフォルトの名無しさん
09/09/05 12:01:05
はっきり言ってVBの方がIDEの補助弱いぜ。
使ってりゃあれって思うこと多い。
リファクタ機能も使えないし、
ツールチップ表示でフルクラス名出ないし、
自作ライブラリのコメント出ないし、
型が色分け表示されないし、
オーバーライドしたいときにoverrideって打って対象メソッド選択とか出来ないし、
こんな感じでイライラする。


364:デフォルトの名無しさん
09/09/05 12:02:52
あと、構文補完も弱かった気がする。


365:デフォルトの名無しさん
09/09/05 12:30:14
>>363
本当にVB(2005以降)の使ったことある?
嘘はいかんと思うよ。

まあVBのIDEの方が遅れてる面が大きいのは事実だが、
リアルタイムのエラー警告だけはVBの方が精度が高いね。
C#みたいにビルドして初めて警告が発せられる・・・ってことがVBにはない。

あと個人的にはメソッドの区切り線の表示機能もC#にあってもいいと思う。

366:デフォルトの名無しさん
09/09/05 12:34:03
で、どれが嘘?

367:デフォルトの名無しさん
09/09/05 12:52:42
VBのコードスニペットだけは使いにくすぎる
なんでC#と同じようにしないんだろう

368:デフォルトの名無しさん
09/09/05 12:52:54
リファクタリング機能があるのならStandard以上のグレードのVSを
持ってるんだろうから試せばわかると思うよ。

369:デフォルトの名無しさん
09/09/05 13:06:33
>>365
>ビルドして初めて
ん?うちのVS2005stdのC#は入力すると即座にエラー一覧に出るんだが。
何か設定か、CPUの能力から自動判断とかじゃないか?

370:デフォルトの名無しさん
09/09/05 13:15:37
staticクラスに宣言されたインスタンスメンバとか
internalクラスをpublicクラスのpublicメンバで公開するとか
そういうのはビルド時までエラーが出ない

371:デフォルトの名無しさん
09/09/05 13:28:18
おお、確かに。文法的に判断もできそうなのに。
public inner a() {
return new inner();
}
static class inner {
int a;
public inner() { }
}


372:デフォルトの名無しさん
09/09/05 14:11:02
メインパネルの中にパネルA、B、Cの3枚を横に並べました。
A、B、Cの横幅を足すと、フォームに収まりきらないので、
メインパネルにはオートスクロールを設定しました。
しかし、ユーザーから、A、B、Cのパネルの内容を一度に閲覧したいという要望がありました。
このとき、
A、B、Cの各パネルのキャプチャーを取得し、各々をやや縮小して別のフォームに横並びに貼り付けて、画面に一覧表示させることは可能でしょうか。
よろしくお願いいたします。

373:デフォルトの名無しさん
09/09/05 14:14:02
はい

374:デフォルトの名無しさん
09/09/05 14:26:14
ものすごく初歩的な質問で申し訳ないんですが

仮にFormを画面左上に移動する関数MoveForm()を作ったとして
あとで、移動先を自由に決めたい、MoveForm(int x, int y)みたいなのが欲しいなーって思ったとします
それでこのとき、引数無しのMoveFormと有りのMoveFormの差は、移動先が決め打ちかどうかの違いしかなかったとします

こういう時は、どういう風に書けばいいのですか?
例えば、MoveForm(int x, int y)という風にオーバーロード?して、その中に引数無しの時との「違い」だけを書くということことがしたいです。

375:デフォルトの名無しさん
09/09/05 14:31:26
void MoveForm()
{
MoveForm(0,0);
}
void MoveForm(int x, int y)
{
//移動処理
}

376:デフォルトの名無しさん
09/09/05 14:39:51
>>373
どうすればできるのでしょうか…。
何かヒントを…。

377:デフォルトの名無しさん
09/09/05 14:41:45
>>361
>>373
あなた、何か怒っているのか?

378:デフォルトの名無しさん
09/09/05 14:46:31
>>377
質問に答えているだけだろ。大人げないとは思うがw
質問する方も素直に、判らないのでどうすればいいか教えて下さいって書けよ。

379:デフォルトの名無しさん
09/09/05 14:48:51
たぶん怒ってはない。
質問に「リテラルに」答えてるだけだと思うよ。
それは>>373がただ意地悪な人間なだけかのか、それとも他のになにか原因もあるのかは
よく考えたほうがいいと思うな。

380:デフォルトの名無しさん
09/09/05 14:50:42
>>375
なるほどー!
引数無しの方をなんというか「オリジナル」みたいに考えていたので
これにどう「付け足すか」っていう風にしか考えることができてなかったです

続けて質問して申し訳ないんですが
オーバーロードの使い方ってどんな風に使うんですか?
OnPaintとかをオーバーロードしてるのは本にあったのですが
自分で作るときにうまく当てはめることができないです。

381:デフォルトの名無しさん
09/09/05 14:51:37
>>373
教えていただけないでしょうか。
dobonさんのページにキャプチャー機能があるとは書いていましたが、縮小拡大が分かりません。

382:デフォルトの名無しさん
09/09/05 14:52:22
オーバーロード?
オーバライドじゃなくて?

383:デフォルトの名無しさん
09/09/05 15:05:38
あ、ごめんなさい、オーバーライドです

384:デフォルトの名無しさん
09/09/05 15:15:09
>>381
そのキャプチャー機能とやらがどういう風なのか知らないし
やりたいこともいまいち意味がわからんが…

画像の拡大縮小はちょっと調べたら出てくるよ
一番簡単なのはDrawImageにそのまま希望するサイズを書くことかな。


// ここまでに何かしらしてGraphics GとBitmap bmpを取得しているとする...
G.DrawImage(bmp, 0, 0, 800, 600);
bmp.Save("hoge.bmp", System.Drawing.Imaging.ImageFormat.Bmp);

385:デフォルトの名無しさん
09/09/05 15:19:04
書き忘れたけどGを800*600としてhoge.bmpに保存してる
別フォームのPictureBoxとかに貼り付けるなら最後に連結したbitmapをそのまま送り込めばいいんじゃない?

つーか悪いこと言わんから他の方法考えろよ

386:デフォルトの名無しさん
09/09/05 15:24:02
手間の割りにあまり有り難味の無い機能だと思う

387:デフォルトの名無しさん
09/09/05 20:26:01
いつまでたってもオブジェクト指向で作れねぇ…
ゲームとかならともかくふつうのアプリ作ってる時にうまくオブジェクトとして切り分けできん

個人で極々規模の小さいものしか作ってないから「動くからいいか」ってなってるのも悪いって自覚はしてるんだがな…

388:デフォルトの名無しさん
09/09/05 20:28:14
別に悪く無いだろ

389:デフォルトの名無しさん
09/09/05 20:53:29
フォームにA、Bの2枚のパネルを並べてそれを継承し、
新しいフォームを作成しました。
継承先でパネルAにコントロールやデータグリッドビューをたくさん配置したのですが
継承元のフォームでパネルAを削除してリビルドしました。
継承先のフォームからパネルAの箇所がごっそり消えていたので安心していましたが、
パネルAに置いていたコントロールがどうも残っているようです。
これは、やり直した方がいいでしょうか。

390:デフォルトの名無しさん
09/09/05 20:55:20
知らんがなそんなこと。

391:デフォルトの名無しさん
09/09/05 20:56:57
そういうのは継承を使わない方がいい
フォームAは共通にして,パネルAやパネルBのところをユーザコントロールで差し替えられるようにするのが普通

392:デフォルトの名無しさん
09/09/05 21:02:23
>>390
冷たいこと言わないで答えてあげようよ。
俺たちは同士じゃねえか。

393:デフォルトの名無しさん
09/09/05 21:03:55
>>391
やり直しはできないものなのかな。
デザイナーのところで消していくとどうなるんだろ。
他にもゴミが残るの?

394:デフォルトの名無しさん
09/09/05 21:14:24
>>381ですが、
皆さんありがとうございます。

契約書作成フォームなのですが、
入力項目が多いので1画面に収まりきりません。
なのでスクロールバーや、モーダルフォームを加えて入力をしてもらうようにしているのですが、
利用者がパソコンが苦手な人が多く、
ふと画面から隠れてしまったものがどこにいったのか気になるようです。
なので、
「入力内容一覧」ボタンを置いて、
そこをクリックしたら全入力内容を凝縮させて1枚のパネルやフォームで表示させたいと思ったんです。
けど…文字が小さくなりますもんね。
皆さんはどのような工夫をされているのでしょうか。


395:デフォルトの名無しさん
09/09/05 21:16:06
>>394
なんか数週間前から同じ質問を何度もずっとしてるようだけど、
同じところで何度聞いても同じだと思うよ。
っていうか、どこで聞いても恐らく同じこと。
やろうとしてることに無理があるんだから。

396:デフォルトの名無しさん
09/09/05 21:27:34
もうHTMLでも吐いてブラウザ丸投げでいいよ

397:デフォルトの名無しさん
09/09/05 21:32:43
>>394
入力をいくつかのモーダルフォームに分けて順次入力させれば良いんじゃないの?
あとはそのモーダルフォームが隠れないようにすれば。

398:デフォルトの名無しさん
09/09/05 21:38:00
キー操作でさくさく、ページ切り替えみたいに全部みれればいいんでない。

399:デフォルトの名無しさん
09/09/05 21:43:19
じゃタブコントロールを使えと言う事で

400:デフォルトの名無しさん
09/09/05 21:56:28
画面に入りきらないほど内容が多いみたいだけど、
全てのモーダルが隠れないようにできるの?
やや重ねたらいいのかな。

401:デフォルトの名無しさん
09/09/05 21:58:24
>>393
ですが、どなたかご経験者の方、
教えていただけないでしょうか。
自分も、>>389と同じで、
実態のないコントロールが残っていて悩んでいます。
(-_-;)。

402:デフォルトの名無しさん
09/09/05 22:02:36
どのみちそんな設計を根底からぶっ壊すようなことしちゃったら作り直しだろ

403:デフォルトの名無しさん
09/09/05 22:05:12
継承元のフォーム上のコンテナ(パネル)は、デザイナからは
「見えない」仕様なんだろう。

アクセス修飾がprivateの場合との整合性をとるためか、ただ実装が
面倒だからかは知らないが。

いずれにせよ、普通は>>391の指摘どおりにするよ。

404:デフォルトの名無しさん
09/09/05 22:13:58
>>397
モーダルフォームの表示時は大きめに表示させて、
入力が終われば小さく縮小してパネルの片隅に納めたらいいんじゃないか?
けどそれじゃ、>>394がやろうとしていたことと同じか。
できるかどうかも分からないのに書いてしまったが。

405:デフォルトの名無しさん
09/09/05 22:18:49
1画面に納めようとすることはできそうだけどさ。
無理して、多くの項目を1画面に圧縮したところで、
ユーザーが読むことができるのか?
若者だけが使うのならいいかもしれないけど、
高齢者も利用するのなら、文字が小さいことが逆にストレスになると思うよ。
うーん、どうすればいいんだろう。

406:デフォルトの名無しさん
09/09/05 22:30:05
>>394
仕様がわからないから見当違いかも知れないけど。
・入力フォームとは別に入力済みのデータの一覧か、出力帳票のイメージを表示するフォームを用意して、
 両方を同時に見れる&操作できるようにする
  -> 別のフォームは可変サイズでスクロールバーを用意するか
   縮尺率を自由設定(画面に収まるように自動調整機能あり)出来るようにする
・入力フォームに折り畳み機能を付ける
  -> 秀丸エディタみたいに画面左側に + とか - みたいなボタン?を用意して、ブロックごとに
   表示したり消したりユーザの自由に出来るようにする
・入力データの属性を分類して、分類ごとに入力画面をまとめる
 まとめたらタブコントロールを利用する

たいていは3つめを使う。

407:デフォルトの名無しさん
09/09/05 22:32:31
>>394
あんまり綺麗なやり方じゃないけど1枚辺り1フォームで数個のフォームを同時起動するとかは?
画面から契約書が消えることがダメなら>>398が言うみたいにキー操作で画面切り替えしていくのもダメな訳?

408:デフォルトの名無しさん
09/09/05 22:47:39
はじめまして。
ブラウザ上のテキストボックスに文字を入力させたいです。
書き込む文字云々はできてますが、肝心のそこがわかりません。
テキストファイルに書き込むとかなら方法わかるのですが…
どのようにして、ブラウザ上のテキストボックスを判定して
どうやって書き込めばいいのでしょうか。。。
なんでもいいです、ヒントをください。

409:デフォルトの名無しさん
09/09/05 22:55:04
>>406
自分なら、折り畳み方式となる 2 番目を選ぶ。
動作は jQuery のアコーディオンや、WPF の Expander 的にする。
実装に際しては、全体の折り畳み状態のワンタッチ切り替えも付ける。

画面遷移方式の場合、入力不足などを提示するのが難しいし、画面に
よってコントロール数が偏りやすい点がイマイチかな。

410:デフォルトの名無しさん
09/09/05 22:59:52
一方ロシアはExcelマクロを使った

411:デフォルトの名無しさん
09/09/05 23:02:34
>>407
キー操作で画面切り替えするのって、
alt+tabみたいなイメージ?
それとも、
alt+kで画面A、alt+Lで画面Bみたいなの?

412:デフォルトの名無しさん
09/09/05 23:17:07
折り畳み方式、特にカーソルを当てるだけで展開されるコントロールは
ユーザーもびっくりのいい設計だと思う。
ただ、>>394の対象ユーザーが、全入力内容に対する一覧性を求めているようなので、
>>406の1番目もユーザー寄りのいい設計になるかと思う。

全項目を網羅した単票を用意して画面右側にプレビューさせる。
プレビューの文字が小さすぎなければいいけど…。
作るのは…超めんどくさいな。

413:デフォルトの名無しさん
09/09/06 00:39:07
>>411
1行目で書いたのは前者で2行目は後者のイメージかな

414:デフォルトの名無しさん
09/09/06 00:58:51
WPFでウィンドウ位置を設定するには、
Window windowlocation = new Window();
windowlocation.WindowStartupLocation = WindowStartupLocation.Manual;
windowlocation.Left = 700;
のほかになにが不足してますか?


415:デフォルトの名無しさん
09/09/06 01:14:03
AcrobatReaderとかPowerPointとかOOo Impressみたいにプレビューペインと
ドキュメントペイン作って中でスクロールさせちゃえよ。
PDFとかプレゼンテーションツールみたいに操作します。って言えばいい。
既存のUIの方がわかりやすいと思うんだよなぁ。

416:デフォルトの名無しさん
09/09/06 01:17:24
>>414
Leftの他にTopも必要じゃないの?
WPF知らんけど

417:デフォルトの名無しさん
09/09/06 01:25:53
知らないなら黙っててくれませんか?

418:デフォルトの名無しさん
09/09/06 02:16:10
不足してない

419:デフォルトの名無しさん
09/09/06 02:22:19
>>365
でどれが嘘?


420:デフォルトの名無しさん
09/09/06 02:56:33
バージョン特定してないのにどれがどうとかないだろ
コメントは2008から表示されてるとか2010の評価版は型の色分けされてるとか
ツールチップのフルクラス名についてはたぶん勘違いだと思う

あとoverrideはOverridesと間違えてないか

421:デフォルトの名無しさん
09/09/06 03:05:28
>>417
書いてくれた相手に失礼だ。
憶測も立派な意見。
大抵は憶測から新しい発見がある。

422:デフォルトの名無しさん
09/09/06 04:21:03
>>394のいうイメージでやってみた。
確かに画像はキャプチャーされるし拡大縮小のロジックもあったけど、
もし画面やコントロールのキャプチャーをとり、縮小表示させた。いのであれば要注意だ。

画像を縮小したら文字がつぶれてしまうぞ。
例えば文字フォント9ポイントの入力フォームを作成し、それの縮小番も見たら、画像がぼやけていた。

423:デフォルトの名無しさん
09/09/06 04:57:18
そもそも>>394は別の方法を模索しているでしょ。

424:デフォルトの名無しさん
09/09/06 05:04:09
TextWriterに書き出された内容を文字列として受け取りたいのですが、
どうすれば良いでしょうか。ToString()等では取れませんでした。
いったんMemoryStreamに吐き出してから
ReaderでRead()することで動作は実現しましたが…。

425:デフォルトの名無しさん
09/09/06 05:28:58
それでいいよ

426:デフォルトの名無しさん
09/09/06 06:21:53
StringWriterも知らんのか

427:デフォルトの名無しさん
09/09/06 06:23:25
>>423
そうなんだけど…
画像キャプチャーしてサムネイルみたいに縮小させる表示は俺も覚えておこうと思っていた。
結局は、縮小は特に画像が劣化してしまうね。bmp90%でもかなり汚くなった。
きれいになんかできないよね。
…カクン。

428:デフォルトの名無しさん
09/09/06 07:38:12
アルゴリズムを指定して拡大縮小する方法があるだろ。

429:デフォルトの名無しさん
09/09/06 07:46:51
でその拡大縮小を>>394は本当にほしがっているのかと。
木とブランコの絵思い出したわ。

430:デフォルトの名無しさん
09/09/06 08:38:13
>>428
概要を…教えてもらえませんか?
今、ネットで探したけど見つかりませんでした。

431:デフォルトの名無しさん
09/09/06 08:41:43
>>429
見映えが良いなら、採用したいんじゃないか?
裏に隠れた項目も含めて、一覧で全項目を画面表示できたら壮快だし。
僅かながらのサプライズもあるだろう。
彼はそのサプライズを求めているのだろうけど、気持ちは分かる。

432:デフォルトの名無しさん
09/09/06 08:57:11
>>430
URLリンク(www.atmarkit.co.jp)

433:デフォルトの名無しさん
09/09/06 09:36:58
WPFならベクトルだから綺麗に縮小できる・・かな?

434:デフォルトの名無しさん
09/09/06 10:15:08
>>420
バージョン特定ったって、2010はないだろ。

今VBで確認してみたが、
ツールチップでフルクラス名は表示されない。
リファクタ機能はない(少なくとも標準の機能では)。
自作ライブラリのコメント表示は2008からはできるようになってるな(2005ではできなかった、もしくは制限があった)。
クラスの色分けはされない。
Overridesは2008ではできるようになってるな(2005ではできなかったと思うが)。


435:デフォルトの名無しさん
09/09/06 10:23:15
5つのうち3つは2008でもそのままで2005では多分全部正しかったと思うがなんで
>本当にVB(2005以降)の使ったことある?
>嘘はいかんと思うよ。
こうなるのか不思議だよ。


436:デフォルトの名無しさん
09/09/06 10:25:36
まあWPF向きではあるな
字が小さいなら拡大鏡みたいな機能を付けるのも簡単

437:デフォルトの名無しさん
09/09/06 13:35:19
>>434
リファクタ機能は2005からある(C#に比べて貧弱だが)
まあ、Refactor!っていうフリーで使えるアドインも一応あるし。

オーバライドの入力支援も、少なくとも2003からある。
ただし2003の時代はエディタ上部のドロップダウンから選択する方式だったが。

>>435
あんた不思議な思考回路してるな。
これが俗に言う「幸せ回路」って奴かな。
最近流行り(?)の「新型うつ」っていうのはこういう思考回路の人がかかる病気なんだろうな恐らく。

438:デフォルトの名無しさん
09/09/06 14:01:07
VBのリファクタ機能って名前変更だけで他は全部使えないだろ?
アドインで追加するのは今の話と違うんじゃないの?

オーバーライドだけは勘違いだったみたいだが。
で、それでも事実上4つは正しいのに幸せ回路とか
お前ちょっとおかしいんじゃないか?

5つの内4つは正しいのに、嘘書くな、使ったことないだろって書く方が正常なわけ?

まともに言い返せないから意味不明な人格攻撃を始めるやつの方がまともとは思えんね。


439:デフォルトの名無しさん
09/09/06 14:07:23
ぶっちゃけ何の原語で書こうとも、どんな文法で書こうとも

自動化できて早ければいいじゃん

人間様がそれで楽できれば

440:デフォルトの名無しさん
09/09/06 14:13:01
>>438
「幸せ回路クン」って何でも自分に都合がいいように解釈するから
議論が成り立たないのがよくわかったよ。

441:デフォルトの名無しさん
09/09/06 14:27:04
都合がいいって…

リファクタ機能が名前変更だけはできるってのはわざわざ書かなかっただけ。
名前変更できるだけではリファクタ機能があるとは言えんだろう普通。
つか元々C#で使える他のリファクタ機能が使えないことをさして言ったんだ。
ちょっと言葉足らずだったとは思うが普通意図は通じるだろう。

オーバーライドだけは勘違い。

君はこの2つを指して嘘とか使ったことないだろとか都合がいいなんて言ってるの?

まあもう言っても無駄なタイプだと思うけど。


442:デフォルトの名無しさん
09/09/06 14:29:05
>>439
でもさ、自動化できて早くなったとしても肝心の人間の中身が
つまらんことで言い合ってスレを消費するような阿呆だったら変わりないよな。

443:デフォルトの名無しさん
09/09/06 14:36:33
当然知ってると思うけどInterpolationModeで補完拡縮できるよ
URLリンク(www.atmarkit.co.jp)

まあ、そうはいってもそんなにたいしたことないから
本気でやりたいならライブラリとか探した方がよさそう。

444:デフォルトの名無しさん
09/09/06 14:42:27
ライブラリ探しても大して変わらんと思うけど。

445:デフォルトの名無しさん
09/09/06 14:45:52
まあそれはそうかもしれんけどさw
だから”本気でやりたいなら”って書いたじゃん

446:デフォルトの名無しさん
09/09/06 14:51:30
いや、画像の拡大という特性上、本気でやったところで出来ることは限られてるわけで、
標準の機能だけでもほとんどその上限レベルだから、
良くしようがないんじゃないかって話。


447:デフォルトの名無しさん
09/09/06 14:52:42
大して変わらないのに、ライブラリ探せ?

何言ってんの?

448:デフォルトの名無しさん
09/09/06 14:53:28
それはその通りだね。だけど今回は縮小だからなんか凄い人が凄い方法でやってないかなーって思っただけ
まったく調べてもないし妄言だと思ってください。

449:デフォルトの名無しさん
09/09/06 14:57:48
おっと縮小ならまだやりようはあるか。
まあ期待される結果になるかは別問題ではあるけど。


450:デフォルトの名無しさん
09/09/06 14:58:22
どうでもいいよ

451:デフォルトの名無しさん
09/09/06 15:05:44
つまり結論としてデカい液晶を使えってことですね

452:デフォルトの名無しさん
09/09/06 15:06:31
拡大機能付ければよくね

453:デフォルトの名無しさん
09/09/06 15:08:35
>>452
ソース画像は持ってるもんな。
でも全体が潰れてる訳だから全部拡大鏡で見なきゃいけないからそれが優しいGUIかどうかは…。

454:デフォルトの名無しさん
09/09/06 16:56:52
ジェネリックスで生成したtabPageをpublicにしたいのですが
どう宣言すればよいのでしょうか?

455:デフォルトの名無しさん
09/09/06 17:01:03
日本語でおk
C#でもおk

456:デフォルトの名無しさん
09/09/06 18:14:02
ラインシェイプが増えましたが、
DOCKはないんですか?
せっかく楽にきれいな罫線が引けると思ったのに。
パネルもテキストボックスもラベルも、ボーダーラインは黒か3Dしかないしさ。
寂しくて辛くて飲まずにはいられません。


457:デフォルトの名無しさん
09/09/06 18:21:20
ラインシェイプって何?

458:デフォルトの名無しさん
09/09/06 18:29:34
プログラミング素人です
以下のような機能をもつニコニコ動画やYoutubeを観るための
専用ブラウザを作ろうとしています
【機能】
ニコ動上で検索結果一覧からある動画を選んだ際、
その動画に含まれる映像シーンと同じシーンを含む動画を
検索結果の一覧に含まれる動画を探索して取得

言語はC#です。調べた限りではおそらく以下のような流れになると
考えているのですがもっと良い方法はあるでしょうか?

1..動画を選択した際にニコ動のAPIにアクセス→FLV取得
2.FLVをaviに変換(この辺自信ありません)
3.シーンに分割
4.検索結果内の動画を取得し,同様にシーンに分割
5.選択した動画におけるシーンと総当たりで比較

画像解析にはOpenCVというライブラリが良いということを聞いたので
それを使おうと思っています。宜しくお願いします。

459:デフォルトの名無しさん
09/09/06 18:35:42
ということは、一度すべての動画をローカルに引っ張ってくるって事?
はた迷惑なソフトだな

460:デフォルトの名無しさん
09/09/06 18:37:04
まぁ、基本的に無理って考えた方がいいな。

461:デフォルトの名無しさん
09/09/06 18:38:26
>>458
何に使うためにそんなことするの?
かなりの高スペPCでも処理時間半端じゃないと思うんだが。

462:デフォルトの名無しさん
09/09/06 18:39:49
>>461
P2P感覚で動画を地引きしたいんだろ。

463:デフォルトの名無しさん
09/09/06 18:40:04
>>457
3.5のsp1からついてる線引きコントロールさ。
ドックがなきゃ、危なくて使えねえよ。

464:デフォルトの名無しさん
09/09/06 18:49:55
>>459>>462
目的は卒業研究です
上記ではブラウザと書きましたが特にブラウザにこだわる必要はなく
入力として一つの動画が与えられた時に、それと同一シーンを含む
動画を抽出するシステムがあれば問題ないです
C#しか使ったことがないので、クライアントサイドのアプリケーションしか
思い浮かびませんでした

何か良い方法はありますでしょうか?

465:デフォルトの名無しさん
09/09/06 18:52:32
卒研っていつから自分で考えずに他人任せで良くなったんだ?
吐きそうになるわ。

466:デフォルトの名無しさん
09/09/06 18:56:06
プログラミングは手段でしかないんだから別に質問していいだろ

467:デフォルトの名無しさん
09/09/06 18:57:07
その手段を考えるのが研究じゃないのか

468:デフォルトの名無しさん
09/09/06 18:58:37
>>464
そのOpenCVがどういうライブラリかも知らんけど
もっと他のアプリ作る訳にはいかんわけ?

469:デフォルトの名無しさん
09/09/06 19:00:22
たぶんアクセスし過ぎで運営から弾かれると思うけど
とりあえず458の方法で作ってみればいいじゃん

なんでプロトタイプスラ作らないで質問しに来るわけ

470:デフォルトの名無しさん
09/09/06 19:01:55
動画関係の研究室なら実験用の動画があるだろ
それを使えよ

471:デフォルトの名無しさん
09/09/06 19:02:20
この場合、手段の研究だもんな。

472:デフォルトの名無しさん
09/09/06 19:03:14
研究なんて大仰なもんじゃなく卒業工作だろこれはwww

473:デフォルトの名無しさん
09/09/06 19:04:27
いえ理論重視の研究です
上記の力技でもやれんことはないことは分かってるけど
早く出来る方法があれば知りたかっただけ
あんがと

474:デフォルトの名無しさん
09/09/06 19:05:14
テキストボックスに、
「あいうえお」と入れて、別のラベルにも表示させたいのですが、
「あ」「い」など、1文字単位で確定したときに、ラベルに反映させる方法はありますか?
もしあれば教えてください。
よろしくお願いします。

475:デフォルトの名無しさん
09/09/06 19:05:20
>>472
これはあくまで研究の一部分です

476:デフォルトの名無しさん
09/09/06 19:06:24
理論なんか出てきたか?

>>474
TextBoxにTextChangedとかいうイベントがある

477:デフォルトの名無しさん
09/09/06 19:07:14
研究(笑)

478:デフォルトの名無しさん
09/09/06 19:09:23
>>474
変換確定前にそういう事をしたいとエスパーすると
Imm~
系のWinAPIを使うしかないんじゃね

479:デフォルトの名無しさん
09/09/06 19:09:51
>>476
社会学系の文系院で
理論検証にプログラムが少し要るってことです

480:デフォルトの名無しさん
09/09/06 19:09:52
まず大学名をいえ

481:デフォルトの名無しさん
09/09/06 19:10:59
いいよ言わなくてw

482:デフォルトの名無しさん
09/09/06 19:11:11
Bランの私大です

483:デフォルトの名無しさん
09/09/06 19:12:59
違うアプローチを考えたほうが良さそうな気がするけどな…

484:デフォルトの名無しさん
09/09/06 19:13:29
社会学(笑)

485:デフォルトの名無しさん
09/09/06 19:14:00
>>483
わかりました
ありがとうございます

486:デフォルトの名無しさん
09/09/06 19:20:49
>>464
幼稚な煽りは気にすることはないと思うが、
少なくとも今のPCの性能じゃ無理。
恐らく10年後のハイエンドPCでも無理な仕様だと思う。

487:デフォルトの名無しさん
09/09/06 19:22:19
まあこのキーワードでググれば卒業研究から実名がばれることも想像できない程度だからな。
下手に卒研なんて出すのが阿呆。

488:デフォルトの名無しさん
09/09/06 19:26:55
ふーんしょうもない煽りしかできないお前さんはアホじゃないって言うんだw
これが2ch脳かね。人間として終わってるだろ。

489:デフォルトの名無しさん
09/09/06 19:29:34
>>486
ですよね・・・・。
なんとか別の手段を考えてみます・・。

490:デフォルトの名無しさん
09/09/06 19:33:38
手段だの何だのはどうでもいいけどさ
サーバに迷惑だけはかけるな

491:デフォルトの名無しさん
09/09/06 19:35:12
>>489
まともな回答が来ないのはお前の質問の仕方が…
と言おうと思ったが言う前に低脳がいっぱい沸いてたわ

答えにくいなら答えなくてもいいが理論の検証には何が必要なんだ?
もしくは、どういう理論を証明したいんだ?

あの方法でやらなくてもいいんだとして最低限これは必要ってのはないのか?

492:デフォルトの名無しさん
09/09/06 19:41:33
そのへん言うと特定特定いう馬鹿が出てくるからごめんなさい
回答してくれた方ありがとうございました

493:デフォルトの名無しさん
09/09/06 19:43:48
だろうな。
まあ、それがわからんことにはこっちも他の方法を考えることができんし
自分でなんか他の方法考えついたらまた聞きに来たら?

494:デフォルトの名無しさん
09/09/06 19:44:48
じゃあ最初から質問するなよ!

495:デフォルトの名無しさん
09/09/06 19:47:25
>>493
ありがとうございます

>>494
うんこ

496:デフォルトの名無しさん
09/09/06 19:49:46
最初から最後まで最悪な奴だったな。

497:デフォルトの名無しさん
09/09/06 19:51:50
2ch脳は黙っとけや

498:デフォルトの名無しさん
09/09/06 20:20:29
2ch脳なんて煽り言葉を使う人こそ、2ch脳と呼ばれるに相応しいと思う。
自己紹介してるようにしか見えんな

499:デフォルトの名無しさん
09/09/06 20:28:38
どうでもいいよ
休みがあと少しだからって興奮すんなよ

500:デフォルトの名無しさん
09/09/06 20:28:52
初歩的な質問です

クラスA
 メソッドA
 メソッドA’
 メソッドB
 メソッドB’
 プロパティX

のように、プロパティXの値によってメソッドAかメソッドA’ メソッドBかメソッドB’のどちらかが呼び出されます
でも呼び出し側はそれを意識したくありません
将来的に分岐はこれ以上増えません あくまで2つのうちどちらかに分岐します
こんなときはどんなパターンを使えばいいでしょうか?
一つのメソッドの中でifで分岐しちゃうのが一番楽ですか?
ちなみにメソッドはこの先増える可能性があります

501:デフォルトの名無しさん
09/09/06 20:28:56
あれか、そろそろ荒らしに反応する人も荒らしって書けばいいのかな

502:デフォルトの名無しさん
09/09/06 20:31:14
>>500
Stateパターン

503:デフォルトの名無しさん
09/09/06 20:31:50
Factory パターン

504:デフォルトの名無しさん
09/09/06 20:43:28
>>500です
すみません。重要なことですが、状態は(分岐条件は)アプリケーション実行中に変化します。

505:デフォルトの名無しさん
09/09/06 20:50:01
別に重要じゃない件

506:デフォルトの名無しさん
09/09/06 20:52:59
Factoryパターンだと途中で変わるのには相性が悪いね

507:デフォルトの名無しさん
09/09/06 20:57:05
TextBoxに次しか入力をさせたくないので次のコードを記述し
数値のみ入力を受け付ける様にする事は出来たのですが、
②③④も入力を許可したい場合にはどうすれば良いでしょうか?

① 数値
② ピリオド
③ BackSpace
④ Delete

private void txtTest_KeyPress(object sender, KeyPressEventArgs e)
{

  if (e.KeyChar < '0' || e.KeyChar > '9')
   {
     e.Handled = true;
   }
}

508:デフォルトの名無しさん
09/09/06 20:58:14
>>502
ちょっと調べてみます。ありがとうございました。
>>503
わたしも最初それが思い浮かんだんですが、実行中に条件が変化したらって考えると・・・
>>506
Factoryは使ったことあったんですが、工夫すれば使えますがなんか遠回りしてる気がしたんで・・・ありがとうございます

509:デフォルトの名無しさん
09/09/06 20:59:01
分岐が常に2パターンで、増えるメソッドの方は分岐しない
→そのまま

分岐が常に2パターンで、増えるメソッドの方も常に2パターン分岐する
>>502

510:デフォルトの名無しさん
09/09/06 21:05:19
>>509
ありがとうございます 解説読んでてStateパターンがよさそうと思いました

とりあえず試してみます。ありがとうございました。

511:デフォルトの名無しさん
09/09/06 21:57:09
>>507
こういうのは自分で考えた方がためになるよ?
動作確認はしてないし、この方法だとたぶん制約があるから、確認はちゃんとしてね。

System.String ok = "0123456789."
e.Handled = ( 0x20 <= e.KeyChar ) && ( 0 > ok.IndexOf( e.KeyChar ) );

512:デフォルトの名無しさん
09/09/06 22:17:44
普通にArray.Containsでいいような・・・

ちなみに、BSかDELのどちらか(確かBSの方だったと思うけど・・・)は
KeyDownの方でないと弾けない。

513:デフォルトの名無しさん
09/09/06 22:27:19
>>511
ありがとうございます。参考にさせて頂きます。


514:デフォルトの名無しさん
09/09/06 23:45:26
いや、だからそんな間抜けな方法じゃなくて普通にArray.Contains使おうよ。

515:デフォルトの名無しさん
09/09/07 00:23:47
ペンでラベルの四隅にオレンジ の枠線を描こうとしたら、2辺しか描かれません。
0 0 ワイズ 0
0 0 0 ハイト
0 ハイト ワイズ ハイト
ワイズ 0 ワイズ ハイト
と記載しました。
下の2つが無視されているようです。
なぜでしょうか。

516:デフォルトの名無しさん
09/09/07 00:25:50
何言語だよ

517:デフォルトの名無しさん
09/09/07 00:50:12
>>515
今年は(10年区切りで)2000年代最後の年なわけだけど、2010年ではない。
この意味わかる?

っていういか、こういう算数レベルのことが直感的にわからない人は
プログラマ向いてないよマジで。

518:デフォルトの名無しさん
09/09/07 00:51:10
うるせえばーか

519:デフォルトの名無しさん
09/09/07 00:51:50
範囲外への描画は無視されるんじゃないか
wiseが意味不明だけど

520:デフォルトの名無しさん
09/09/07 00:52:38
ハイトワイズわろた

521:デフォルトの名無しさん
09/09/07 00:56:05
"height","width"と読め

522:デフォルトの名無しさん
09/09/07 01:01:43
URLリンク(dictionary.goo.ne.jp)
Goo辞書で発音聞けますよ

523:デフォルトの名無しさん
09/09/07 01:03:42
いや俺ネイティブだから要らんわ

524:デフォルトの名無しさん
09/09/07 01:06:40
Linuxのカタカナ表記は何だって話になる

525:デフォルトの名無しさん
09/09/07 01:12:37
ワイズってのは新しいなしかしw
大昔ヤマハのPCでそんな名前のがあったような

526:デフォルトの名無しさん
09/09/07 01:12:45
Enumerableってどうよむんですか

527:424
09/09/07 01:21:36
>>425,426
StringWriterでそのまま取れました。お恥ずかしい限りです。
ありがとうございました。

528:デフォルトの名無しさん
09/09/07 01:26:46
気にするな
恥ずかしいことじゃない
俺も知らんかったからな

529:デフォルトの名無しさん
09/09/07 01:27:05
>>526
いにゅまらぶる

530:デフォルトの名無しさん
09/09/07 01:56:49
ワイズか、懐かしい
30年前、BASIC始めたとき俺もそう呼んでいたな
WIDTH 80,25

531:デフォルトの名無しさん
09/09/07 04:15:41
>>145
俺も思ったw

532:デフォルトの名無しさん
09/09/07 06:42:34
>>521
ヘイト?
ワイス?
何て読むのが通常なの?

533:デフォルトの名無しさん
09/09/07 06:45:13
>>519
彼の指定は範囲外になるの?
一見、範囲内の境界座標を指定しているように見えるが…。

534:デフォルトの名無しさん
09/09/07 06:46:10
>>532
ヘイ
ウィスス

535:デフォルトの名無しさん
09/09/07 07:25:13
>>533
(0, 0)          (width-1, 0)
┌────┐
└────┘
(0, height-1) (width-1, height-1)

536:デフォルトの名無しさん
09/09/07 08:25:49
背景画像を表示できるテキストエディタを作りたいのですが、TextBoxではできませんよね?
方法あれば教えてください

537:デフォルトの名無しさん
09/09/07 09:42:16
WPFならグリッドにイメージとテキストボックスを入れるだけ、C#のフォームウィンドウは簡単にはできない

538:デフォルトの名無しさん
09/09/07 10:36:32
今から見た目を重視したアプリ作るならいいかげん観念してWPF使った方がいいね
自前描画は一切無しで自由自在に外観を操れる

539:デフォルトの名無しさん
09/09/07 17:22:39
.net framework compact ですが
Graphicsには
TranslateTransform()
RotateTransform()
などのサポートがありません

画像を任意の角度で回転させたいのですが、よい方法がありませんか?
90度刻みではちょっと困りまして・・・imgeのRotateFlipではもの足りません
CかC++の座標変換と補完のサンプルプログラムなどでもかまいません
あるいはフリーのライブラリでもかまいません(小さいやつがいいですが)
よろしくお願いします

540:デフォルトの名無しさん
09/09/07 17:27:28
自分で書く
高校レベルじゃん?

541:デフォルトの名無しさん
09/09/07 18:05:29
やってみまーす

542:デフォルトの名無しさん
09/09/07 20:08:27
ただの座標変換と訳が違うのに高校レベルなわけないだろアホか。
回転行列を全ての座標に施せばいいとでも思ってるのかw

543:デフォルトの名無しさん
09/09/07 20:12:50
ぶっちゃけ回転させると
DirectX(SlimDXorMDX)の方が楽な気がする

544:デフォルトの名無しさん
09/09/07 20:13:01
誰か…誰か…
ユーザビリティーに優れたインターネットサイトを教えてください。
ユーザビリティーに優れたアプリを作らなければいけないんだけど、アイデアもスキルもありません。
会社を退職に追いやられるかもしれません。
ユーザビリティーに優れたサイトを教えてください。

545:デフォルトの名無しさん
09/09/07 20:15:23
ゆーざびりてぃーってなんですか

546:デフォルトの名無しさん
09/09/07 20:29:17
>>545
ユーザビリティーとは、使いやすくて面白くて優しくてまた使いたいと思って手が話せなくて美しくてサプライズがあって嬉しいこと。

547:デフォルトの名無しさん
09/09/07 20:49:00
そりゃすごい

548:デフォルトの名無しさん
09/09/07 21:22:39
>>537
WPF触ったことなかったのですが、簡単にできました
ありがとうございます

549:デフォルトの名無しさん
09/09/07 21:57:54
using の使いどころなんですが、IDisposable は全部 using で囲っとけいいんでしょうか?
それとも囲うべきものと囲わなくていいてものがありますか?

あと、あるクラスを使おうとおもったときに、それが IDisposable を実装しているか
どうか簡単に調べる方法ありますか?いまはヘルプでしらべてるんですが、
そのクラスが直接 IDisposable を実装してれば簡単なんですけど、
継承元があると順々にヘルプを見ていくのが面倒なもので。

550:デフォルトの名無しさん
09/09/07 22:11:46
厳密に言うとあるんだけど、気にせずに Dispose() できるものは Dispose() しとけば OK。

551:デフォルトの名無しさん
09/09/07 22:15:16
>>549
ドット打ってIntelliSenseにDisposeが出てくればIDisposable。
でいいんじゃないかな(たまに隠れてるのもありますが9割方はOK)。
正確に調べたければ右クリックして定義に移動、そんなに手間かからないでしょ。

552:デフォルトの名無しさん
09/09/07 22:15:58
usingは使えるときには使う。できれば,usingが使えないような使い方はなるべく避ける。

553:デフォルトの名無しさん
09/09/07 22:34:11
StreamReaader/WriterとStreamはどっちをCloseするんだったか、
毎回忘れて悩む俺。

Stremをその後使わないなら両方Closeしてもいいんだっけ。
どうもこのあたり釈然としない。

554:デフォルトの名無しさん
09/09/07 22:40:18
WPFとWINフォームを混在させることはできるの?
WINフォームを作成しながら、時々WPFを使うことはできないの?

555:デフォルトの名無しさん
09/09/07 22:54:13
>>553
StreamReader/Writer.Closeは元のStreamごとClose
元のStreamを閉じたくなかったら(WriterならFlushして)放置

556:デフォルトの名無しさん
09/09/07 22:54:17
>>554
やったことはないが、できることはできる。ここを参照。
URLリンク(msdn.microsoft.com)



557:デフォルトの名無しさん
09/09/07 23:02:04
>>555
そうかありがとう。

なんか分かりにくくてミスリーディングな仕様のような気もするけど、
それはたぶん俺の理解が浅いからなんだろうね。

558:デフォルトの名無しさん
09/09/07 23:02:53
>>542
ちょっとロードマックみてください
最終的な画像の大きさはピクチャーボックスの表示領域と決っているので
まず、最終的な画像の大きさと同じビットマップを作成
for(x=0;x<=xmax;x++)
for(y=0;y<=ymax;y++)
逆回転の計算をしてソース画像のピクセル情報を取得してコピー
座標がソース画像をはみだしたら背景色で埋める
loop
loop
こんな感じで考えてますが・・・
もと画像がでかい上に最終的な領域を計算で求めてから元画像のビットマップを
ループするより簡単かつ補完の必要がなさげ・・・・

>>543
SlimDX MDX ってWindows mobile や Framework compackt もカバーしてますか?
サイズが小さければ使いたいですが、ちょっと見ただけではカバーしてなさげで・・・

559:デフォルトの名無しさん
09/09/07 23:11:08
>>557
うん、極めて明快な仕様だと思うよ。
ドキュメントが記述不足なのは確かだけどね。

560:デフォルトの名無しさん
09/09/07 23:18:38
>>558
つ「.NET Compact Framework での Mobile Direct3D プログラミング」
.NET CF2.0以降なら標準でついてるはず
どんなことができるのかは知らん

561:デフォルトの名無しさん
09/09/07 23:55:16
>>560
見てみます!ありがとう

562:デフォルトの名無しさん
09/09/08 00:06:06
配列について質問があります。
配列の合成の話がありましたが、ふたつの配列のうち、いっぽうにあるものを取り除く方法を教えてください。
いっほうが配列で、もういっぽうがstringであれば、

string dislikeitem = "あんまん";
string[] menuitems = {"肉まん","あんまん","ピザまん","茄子","ゴーヤいり卵焼き"};
string favoritemenu = "";

foreach(string item in menuitems) {
if (!item.Contains(dislikeitem) && !favoritemenu.Contains(item)) favoritemenu = favoritemenu + item + "\r\n";
}
MessageBox.Show(favoritemenu);

のように書けるのですが、もういっぽうも配列になったときの比較の方法がわかりません。

string[] dislikeitems = {"にがうり","ゴーヤ","あんまん"};


563:デフォルトの名無しさん
09/09/08 00:24:33
ループを一つ重ねるだけだと思うけど?
// 拡張メソッドならExceptがあるけど、比較にラムダ式使えないのは面倒だなー

564:デフォルトの名無しさん
09/09/08 00:26:01
>>562
質問とは直接関係ないがStringBuilder使え。
んで、ループをforeachやめてforの2重ネストループにしろ

565:デフォルトの名無しさん
09/09/08 00:27:34
もちろんforeachのがわかりやすいならそれの2重ループでも構わん

566:デフォルトの名無しさん
09/09/08 00:29:25
DxLib3.0誕生

567:デフォルトの名無しさん
09/09/08 00:32:12
>>560
見てみましたが3Dに特化した話でした

568:デフォルトの名無しさん
09/09/08 00:36:55
>>566
むしろ今までDX7だったことに驚いた。

>>562
もしコードみてわからんかったらもっかい聞け。

string[] menuitems = {"肉まん","あんまん","ピザまん","茄子","ゴーヤいり卵焼き"};
System.Text.StringBuilder favoritemenu = new System.Text.StringBuilder();

foreach(string item in menuitems) {
foreach (string dislikeitem in dislikeitems)
{
if (!item.Contains(dislikeitem) && !favoritemenu.Contains(item))
{
favoritemenu.Append(item + "\r\n")
}
}
}
}

569:デフォルトの名無しさん
09/09/08 00:46:38
こういうスレだと
長い変数って読むの面倒くさくなるけど
じっさいのコーディングだと普通に長い名前つけるよね

570:デフォルトの名無しさん
09/09/08 01:00:39
面倒だからとても短い変数名にしてしまう

571:デフォルトの名無しさん
09/09/08 01:03:34
読むのが面倒になるほど長い変数名って、可読性落ちて本末転倒じゃね?

変数名が長くなるのって、関数の粒度が大きすぎる時に起きやすい気がする。
適切に分割して関数にちゃんと名前つけてれば、長い変数名使わなくても十分分かりやすいと思う。

572:デフォルトの名無しさん
09/09/08 01:11:18

ある程度変数長ければ
MenuItemsとかにした方が多少自分の命名ルール破っても読みやすい気がする

573:デフォルトの名無しさん
09/09/08 02:27:56
>>564、565
配列と配列なので、

foreach(string item in menuitems) {
foreach(string dislikeitem in dislikeitems) {

のように重ねて書けばよいのかと思ったのですが、
それだと、
あんまん-にがうりの組み合わせであんまんがヒットしてしまいます。
(とりあえずforeachで実装。)

>>568
ゴーヤいり卵焼きがヒットします。

あとStringBuilderにはContainsがないそうで、uniqは別途処理する必要があるみたいです(それはできます)。


574:デフォルトの名無しさん
09/09/08 02:54:09
いきなりコード書くよりまず手順を日本語で書いてみるのを勧めてみる

1.メニューの一つ目を手に取る。itemとする。
2.嫌いなメニューの一つ目を手に取る。dislikeとする。
3.dislikeがitemに含まれているか確認する。
 含まれていなければ次の嫌いなメニューの確認。
 含まれていれば、このitemは無視する。以降の嫌いなメニューの確認は不要。次のメニューへ。
4.全ての嫌いなメニューに含まれていないことが確認できたら、そのitemを出力する。
 次のメニューへ。

さあこのままコード化。
3で含まれていた場合に次のメニューに飛ぶのがちょいと単純ではないけどな。

575:デフォルトの名無しさん
09/09/08 03:13:56
C#のHashtableをRubyみたいに簡単に保存ファイルにする方法ってありませんか?

576:デフォルトの名無しさん
09/09/08 03:15:19
質問と一切関係ないが話の流れ的に
>>562にはぜひキャメルケースとか憶えてほしい。

577:デフォルトの名無しさん
09/09/08 03:46:44
string[] menuitems = { "肉まん", "あんまん", "ピザまん", "茄子", "ゴーヤいり卵焼き" };
string[] dislikeitems = { "にがうり", "ゴーヤ", "あんまん" };
IEnumerable<string> diffSet = menuitems.Except(dislikeitems);

string favoritemenu = string.Join("\r\n", diffSet.ToArray());
MessageBox.Show(favoritemenu);

上で出てるけど、LINQ使っていいならExceptで簡単に差集合作れる。
あとはToArrayで配列にして、Joinで結合するだけ。

578:デフォルトの名無しさん
09/09/08 07:02:56
HashtableってSerializableAttributeついてるからBinaryFormatter使えんじゃないの
試してないけど

579:デフォルトの名無しさん
09/09/08 08:36:23
>>567
3D上の板として2Dを描画するのが最近では普通になってるんだよ

580:デフォルトの名無しさん
09/09/08 09:35:06
>>589
いや3Dの中でも縦回転以外の回転とかメッシュとか固定小数点化での高速化とか、ほんとうに3Dのためのトピックばかりで・・・

URLリンク(homepage2.nifty.com)

ここのサンプルでなんとか自作できそうです。
あとはLockBitでさらに高速化できるかな・・・という感じです。

581:デフォルトの名無しさん
09/09/08 09:43:38
SetPixelやGetPixelは試すだけ無駄
高速化というよりLockBits使わないと使い物にならない

582:デフォルトの名無しさん
09/09/08 10:59:52
ref DataRow を受け取るメソッドがあって、そこに型付DataSetのDataTableのrowを
渡したいのですが、どうやってCastすればいいんでしょうか?

UserDataSet.TESTTBLRow r = UserDataSet.TESTTBL.NewTESTTBLRow();
foo(ref r);

---

private void foo( ref DataRow r )

foo()の中でDataRowの中身を変更しています

583:デフォルトの名無しさん
09/09/08 11:02:53
refなんかいらん
値型と参照型について勉強しなさい

584:デフォルトの名無しさん
09/09/08 11:05:51
>>578
ありがとうございます試してみます

585:デフォルトの名無しさん
09/09/08 11:11:56
>>577
それだとゴーヤ入り卵焼きが食卓に並んじゃう!

586:デフォルトの名無しさん
09/09/08 11:24:37
ゴーヤ入り卵焼きからゴーヤを皿の脇によけて食べればいいじゃない

587:デフォルトの名無しさん
09/09/08 11:43:17
>>583
ありがとうございます。refを削除してブイルドは通るようになりました。
ただ、次のようなコードを書いたときに、

---呼び出し元

foo( UserDataSet.TESTTBLRow r );

int a = r.HOGEHOGE; ← ここでエラー

--呼び出され元

private void foo( UserDataSet.TESTTBLRow row )
{
 row = UserDataSet.TESTTBL.FindByPKEY("xxxx"); // (1)
return;
}

FindByをした直後に row を見ると、個々のColumnには確かに値が入っているんですが、
その後r.HOGEHOGEを見るとDBNullに成っているようなのです。

(1)のところでイコール式で代入しているのが駄目なんでしょうか?

588:デフォルトの名無しさん
09/09/08 11:47:35
いいから黙って値型と参照型について調べてこい
なぜ駄目か理解しないと意味がない

589:デフォルトの名無しさん
09/09/08 11:53:06
参照型だと代入演算子で代入されるのはポインタとうい認識なのですが。
つまり

1) FindBy~ でメモリ上のどこかにオブジェクトが作られて、オブジェクトへのポインタが返る
2) (1) のところで row = ~~ としているので、この時点では row は FindBy~が作った
オブジェクトの領域を指している
3) 参照型なので、foo() の引数でやり取りされるのはポインタ。つまり r はFindBy~で確保
されたオブジェクトの領域を指している

と言う感じで、r は FindBy~で確保された場所をそのまま指しているのでは???

590:デフォルトの名無しさん
09/09/08 12:03:06
ポインタはポインタ 参照型は参照型

そもそも何かを返したいなら返値で返せばよい

591:デフォルトの名無しさん
09/09/08 12:09:27
>>590
答えになってないw

592:デフォルトの名無しさん
09/09/08 12:26:27
var x = new Hoge(); // Hogeの実体を作り,紙xにその住所を書く
foo(x); // 紙xに記されている住所を新しい紙yに書き写してfooに渡す
Console.WriteLine(x.Value);//100が出力される

void foo(Hoge y) { //この時点でxとyは別の紙だが書かれている住所は同じ
y.Value = 100; // yに記されている住所をもとにHogeの実体を探し,Valueプロパティに100を代入する
y = new Hoge(); // yに書かれている住所を消しゴムで消して新しく作られたHogeの実体の住所を書く
y.Value = 200; // 初めに作られたHogeには影響しない
}
説明するのは難しいなあ

593:デフォルトの名無しさん
09/09/08 12:33:57
>>587
その例で言うとですね、変数rと変数rowには同じobjを指し示すアドレスが入っています。
だからrow.XXXXX を変更すると r.XXXXX も同じように変更される(ように見える)のは貴方が
認識しているとおりです。

ただし、変数rの実体と変数rowの実体は別物です。ここに注意しましょう。
だから変数rowそのものの値を書き換えてしまうと、もはや「rowが示す先のobj」と「rが示す先
のobj」は別物になってしまうんです。

あくまで、「rowが示す先のobjの内容をrが示す先のobjに代入」しなければいけません。
で、そういう場合のために通常Copy()メソッドが用意されていたりするんですが、もし無ければ
自分で全要素コピーする必要があります。ディープコピーとかで調べてみて下さい。

594:デフォルトの名無しさん
09/09/08 12:52:49
>>581
まじすか! ありがとうございます。

595:デフォルトの名無しさん
09/09/08 15:04:47
BeginInvoke, EndInvokeを用いたスレッドからの例外について質問です。
以下のプログラムにて、BeginInvokeによって呼び出されるDoWork内の例外を、メインスレッドで
キャッチしてやるにはどうしたらいいのでしょうか?

Main()内のEndXXX呼び出しでキャッチ出来ると思っていたのですが、どうやら駄目なようです。

改行が多すぎると怒られたので、プログラムは次のレスに貼ります。

596:デフォルトの名無しさん
09/09/08 15:07:08
static IAsyncResult BeginXXX(AsyncCallback cb){
Action f = DoWork;
return f.BeginInvoke(cb, null);
}

static void EndXXX(IAsyncResult ar){
AsyncResult res = (AsyncResult)ar;
Action del = (Action)res.AsyncDelegate;
del.EndInvoke(ar);
}

static void DoWork(){
throw new System.Exception("例外っす");
}

static void Main(string[] args){
AsyncCallback cb = (ar) =>{
try{
EndXXX(ar);
}
catch (Exception ex){
Console.Write(ex.Message);
}
};
BeginXXX(cb);
Console.ReadKey();
}

597:デフォルトの名無しさん
09/09/08 15:29:04
何故メインスレッドでcatchしなければならないのか

598:デフォルトの名無しさん
09/09/08 15:34:22
コールバックではなく、メインスレッドでEndXXXを呼び出せばいい

599:デフォルトの名無しさん
09/09/08 16:22:36
>>574
できました。
これを見る前に、自分で考えたので、一日かかっちゃいました。
すこしロジックが違いますが、これで動くようです。
ありがとうございました。
string[] dislikeitems = {"にがうり","ゴーヤ","あんまん"};
string[] menuitems = {"肉まん","あんまん","ピザまん","茄子","ゴーヤいり卵焼き"};
string favoritemenu = "";
bool favorite;
foreach(string item in menuitems) {
favorite = false;
foreach(string dislikeitem in dislikeitems) {
if (item.Contains(dislikeitem)) favorite = true;
}
if (favorite == false && !favoritemenu.Contains(item)) favoritemenu = favoritemenu + item + "\r\n";
}
MessageBox.Show(favoritemenu);

>>576
キャメルケース?
調べてみます。

>>577
LINQは、まだ使ったことがないので、これを機会に勉強します。
ありがとうございました。
…あ。でもこれって、ゴーヤいり卵焼きも入っちゃいますよ。
と、585さんもおっしゃってました…。
>>586
そうか、その手があるか。って、そうじゃなくって。
LINQでゴーヤいり卵焼きをのぞく方法も教えてください。


600:595
09/09/08 16:26:42
失礼しました、デバッグ環境だとcatchしてもコードは停止するのですね…。
ちゃんとメインスレッドでcatchしてるようです。

601:デフォルトの名無しさん
09/09/08 19:07:08
してねーだろw
何が起こってるか理解しろよ。


602:577
09/09/08 19:16:34
>>599
ゴーヤを外すなんてけしからん!真夏には必須だ!

string[] menuitems = { "肉まん", "あんまん", "ピザまん", "茄子", "ゴーヤいり卵焼き" };
string[] dislikeitems = { "にがうり", "ゴーヤ", "あんまん" };

var diffSet = from x in menuitems
where dislikeitems.All((y) => !x.Contains(y))
select x;

string favoritemenu = string.Join("\r\n", diffSet.ToArray());
MessageBox.Show(favoritemenu);

603:デフォルトの名無しさん
09/09/08 19:32:01
InfoPath2007とC#の組み合わせで開発をしています。

入力した文字列をSQLのWhere句に入れて、
取得された結果を動的にドロップダウンリストに入れたいのですが、
テキストボックスには結果が返ってくるのですが、
ドロップダウンリストは変化がありません

while (myReader.Read())
{
this.MainDataSource.CreateNavigator().SelectSingleNode("/my:travelRequest/my:d取引先名", NamespaceManager).SetValue(myReader.GetString(0)); ←こっちがドロップダウン
this.MainDataSource.CreateNavigator().SelectSingleNode("/my:travelRequest/my:d取引先_担当者", NamespaceManager).SetValue(myReader.GetString(1) + " / " + myReader.GetString(2)); ←こっちがテキストボックス、結果返ってくる
}

すみません、どなたか教えてください。

604:デフォルトの名無しさん
09/09/08 19:54:51
>>601
どういう意味で?

605:デフォルトの名無しさん
09/09/08 20:01:19
なんで
トライ、キャッチなんだよ。

エラーとサクセスみたいなのでいいだろうが。


606:デフォルトの名無しさん
09/09/08 20:02:41
>>601
URLリンク(msdn.microsoft.com)

この話でしょ。

607:デフォルトの名無しさん
09/09/08 20:03:18
は?

608:デフォルトの名無しさん
09/09/08 20:05:01
>>605
ダサい。

609:デフォルトの名無しさん
09/09/08 20:24:20
エラー投げるんだからキャッチで良いんじゃない。

610:601
09/09/08 20:24:48
言葉足らずだったかな。
>ちゃんとメインスレッドでcatchしてるようです。
ここに対して言った。


611:デフォルトの名無しさん
09/09/08 20:27:01
VS2005、C#なんですが

pictureBoxの画像をマウスドラッグでgoogleMapのように滑らかにスクロールさせる方法ってありますか?
またはこのような実装を行う方法ってありますか?

612:デフォルトの名無しさん
09/09/08 20:27:01
>>596
>Action f = DoWork;
>return f.BeginInvoke(cb, null);

へえ、こんな風にかけるんか

613:デフォルトの名無しさん
09/09/08 20:29:58
>>612
俺もC#勉強中でこの書き方は初めて見た。
一般的にはどうかくんだろう。誰か教えて。

614:デフォルトの名無しさん
09/09/08 20:39:00
>>613
マルチスレッドのやり方は幾つかあるし正着ってのはないんじゃないかな。
デリゲートに包むってのはそのうちの一つに過ぎないわけで。


615:デフォルトの名無しさん
09/09/08 20:40:25
>>613
非同期デリゲートでググれ

ちなみに、silverlightではサポートされてないので、
コンパイルエラーにはならないが、実行時にエラーが出るので注意

616:デフォルトの名無しさん
09/09/08 20:58:28
>>614-615
ガイドサンクス

617:デフォルトの名無しさん
09/09/08 22:02:52
>>576
キャメルケース。パスカル方式のことでしたか。了解しました。
string[] menuItems = {"肉まん","あんまん","ピザまん","茄子","ゴーヤいり卵焼き"};
ってことですね。
っていうか、なんでそう書かなかったんだろ。
ふだんはそう書いているんですが。

>>602
LINQの一端に触れた気がします。
fromとかinとかwhereとかselectというのが、LINQの書式なのですね。
まだ充分じゃないですけど、foreachをネストする書き方にくらべて、圧倒的にスマートなことはわかりました。
ありがどうございます。


618:デフォルトの名無しさん
09/09/08 22:06:36
Camel形式とPascal形式は違う
camelCase PascalCase

619:デフォルトの名無しさん
09/09/08 23:51:21
>>603
コードが読みにくい。
まさか実際のソースもそんな書き方して無いよね?
趣味で作ってるのならいいんだけどさ。

で、問題の方だけど、ドロップダウンリストに値を設定してるところがダメなんじゃない?
InfoPathは使ったこと無いからよくわからないけど。


620:デフォルトの名無しさん
09/09/09 00:48:01
>>618
一応、これも書いておかないと

Upper Camel = Pascal
Lower Camel = 狭義のCamel

621:デフォルトの名無しさん
09/09/09 09:22:35

Bitmap BmpBuf = new Bitmap("C:\\2008052314460001.jpg");
Picture1.Image = BmpBuf;


画像が表示されません

622:デフォルトの名無しさん
09/09/09 09:29:10
そうか

623:デフォルトの名無しさん
09/09/09 09:35:56
せめてヒントだけでも ><。。

624:デフォルトの名無しさん
09/09/09 10:20:41
もうimagelocation でやれwwwww

625:デフォルトの名無しさん
09/09/09 10:41:29
>>621
デバッグしてそこ実行時にBmpBufが有効か見てみたか?
Picture1ってどのコントロール?

626:デフォルトの名無しさん
09/09/09 10:42:26
"C:\\2008052314460001.jpg"

@"C:\2008052314460001.jpg"
こうしたい

627:デフォルトの名無しさん
09/09/09 10:48:28
>>625
BmpBufはnullでなくサイズプロパティは読み込んだ画像のサイズでした
>>626
あーそういう意味だったのか @使います



628:デフォルトの名無しさん
09/09/09 10:50:00
>>625
Picture1はPictureBoxです

629:デフォルトの名無しさん
09/09/09 10:53:33
それはちゃんとFormに貼り付けられてるのか
何かのコントロールの後ろに隠れてないか
サイズが0,0になってたりFormの表示範囲外にいってたりしてないか

630:デフォルトの名無しさん
09/09/09 11:18:33
>>629
もう一度一から貼り直してやってみます
コードは間違ってはいませんよね?

再描画されないかもしれないのはおいといて

631:デフォルトの名無しさん
09/09/09 11:23:00
>>630
うまくいきました!!

デザイナのコードが壊れてたみたいです

632:デフォルトの名無しさん
09/09/09 11:23:16
>>611
paintでGraphicsのDrawImage使うといい。

633:デフォルトの名無しさん
09/09/09 12:12:39
C++のデザパタに片足突っ込んだ程度の経験なんですが、
今回.NET Framework 4.0が面白そうな事になってるのを聞き及び、C#に手を出してみようかと思っています。
C#のオススメの教本とかあったら教えてもらえませんでしょうか?

634:デフォルトの名無しさん
09/09/09 12:20:31
.NET4ってそんなに面白そうなフィーチャーあったっけ
DLRやPLINQなんか.NET触ったことない人には全く分からないだろうし

635:デフォルトの名無しさん
09/09/09 12:27:34
>>632
ドラッグ中MouseMoveイベントで毎回それやってpictureBoxリフレッシュすると滑らかにならず・・・

636:デフォルトの名無しさん
09/09/09 12:49:42
>>635
どんな環境でどうやってんの?
こっちで試す限りでは普通になめらかに動くよ。
Bitmap毎回作ってるとか?

637:デフォルトの名無しさん
09/09/09 13:43:13
>>636
よっぽどでかくなきゃそれでもまぁいけると思うぞ
Disposeしてなさそうだけど(Disposeいるっけ?)

638:デフォルトの名無しさん
09/09/09 20:31:59
breakについて教えてください。
for (int i = 0; i < 10; i++) {
foreach(string line in lines) {
if {//条件。
break;
}
}
}
で、ifの条件が一致したとき、この位置にbreakを書くと、foreachは終了しますが、外側のforは終了しません。
どこに書けば、外のforも終了できますか?


639:デフォルトの名無しさん
09/09/09 20:36:37
for (int i = 0; i < 10; i++) {
bool exit = false;
foreach(string line in lines) {
if {//条件。
exit = true;
break;
}
}
if (exit) break;//外のforを抜ける
}
もしくは,
for (int i = 0; i < 10; i++) {
foreach(string line in lines) {
if {//条件。
goto EXIT;
}
}
}
EXIT:

640:デフォルトの名無しさん
09/09/09 20:40:30
>>639
ラベルに命令はんないといけないから
EXIT:;じゃね?

641:デフォルトの名無しさん
09/09/09 20:43:09
そうだけど後にステートメントが続くならセミコロンは普通書かない

642:デフォルトの名無しさん
09/09/09 20:47:43
>>641
コンパイル通るの?
前ここではまったんだけど

643:デフォルトの名無しさん
09/09/09 20:48:38
別のアプローチとしてはforを別の関数に切り出してreturnで抜けるというのもある。

644:デフォルトの名無しさん
09/09/09 20:53:44
>>642
通る例
EXIT:
  Console.WriteLine(x);
}
通らない例
EXIT:
}
とにかく後にステートメントがあればいい。セミコロンだけの場合は空のステートメントがあるとみなされる。

645:デフォルトの名無しさん
09/09/09 20:55:44
>>644
じゃあ>>639は嵌るべ

646:デフォルトの名無しさん
09/09/09 22:03:03
>>639
thanks.

647:デフォルトの名無しさん
09/09/09 23:37:40
C♯で拡大鏡はできますか?

648:デフォルトの名無しさん
09/09/09 23:49:15
うん

649:デフォルトの名無しさん
09/09/10 00:27:42
とあるクラスにA1~A5というプロパティがあるんですが
配列のindexのように参照する方法はあるでしょうか?

650:デフォルトの名無しさん
09/09/10 00:34:43
ない

651:デフォルトの名無しさん
09/09/10 01:17:53
>>649
A1~A5の型が同じなら、とあるクラスにインデクサを実装すればいい。
まぁ、こんな事するんじゃなくてA1~A5を格納するAってリストを作るべきだ。

652:デフォルトの名無しさん
09/09/10 01:58:11
.netってスタティックリンクライブラリって使えないの?
DLLは作れるみたいだけどLibファイルのようなものは作れないのかな

653:デフォルトの名無しさん
09/09/10 02:00:44
必要ないだろ

654:デフォルトの名無しさん
09/09/10 02:05:08
作れるよ

655:デフォルトの名無しさん
09/09/10 06:30:54
>>648
どんなメソッドを使えばできますか?

656:デフォルトの名無しさん
09/09/10 07:33:35
Graphics.CopyFromScreen

657:デフォルトの名無しさん
09/09/10 12:06:35
重大ニュース スレは★30までいく

【国際】 中国 「IT製品、ソースコード開示せよ」…日本側が撤回求めるも、予定通り実施へ★4
スレリンク(newsplus板)
「ソースコード開示せよ」…中国が外国企業に要求
スレリンク(prog板)
23 :名無しさん@十周年:2009/09/10(木) 02:28:25 ID:UeD78g5r0
李鵬が言ってた、20年後に日本なんてなくなるって、こういう事か。
40 :名無しさん@十周年:2009/09/10(木) 02:35:03 ID:BKKfZepB0
トヨタがプリウスで儲けれるのも来年までなんだね。

鳩山幸さんはサイエントロジーというカルトと関係があるという噂があります。
URLリンク(an)<)


658:デフォルトの名無しさん
09/09/10 14:33:30
>>652
ILMerge を使えば、複数のアセンブリを一つにできる。

659:デフォルトの名無しさん
09/09/10 15:20:01
DataRowの各項目はキャストしないとobject型のようなんですが、

if (rowA["HOO"] == rowB["HOO"])

みたいな比較は、右辺左辺両方が同じ型?(stringとかint)であることが事前に分かって
いれば、キャストせずに比較しても正しい比較結果が得られますでしょうか?

660:デフォルトの名無しさん
09/09/10 15:23:42
得られません。常に参照比較になってしまいます。
Object型のままで値を正しく比較したければEqualsメソッドを使います。

661:デフォルトの名無しさん
09/09/10 20:50:57
プロセスの終了について質問があります。
写真をまとめてみたいと思って、
string[] files = Directory.GetFiles(@"c:\photo", "*.jpg");
foreach(string file in files) {
photoProcess = new Process();
photoProcess.StartInfo.FileName = file;
photoProcess.Start();
}
Thread.Sleep(1*60*1000);
if (! photoProcess.CloseMainWindow()) {photoProcess.Kill();}photoProcess.Close();photoProcess.Dispose();
とやって見たところ、開いて1分待つところまではよいのですが、最後に閉じるのが1枚だけで、あとのウィンドウは開いたままになってしまいます。
こういう場合は、どうやればぜんぶのウィンドウを一括してクローズできるか、ご教示いただけないでしょうか。


662:デフォルトの名無しさん
09/09/10 20:51:47
>>652
csc.exe /target:module
ちなみに
Q. Visual Studio 開発環境でこのコンパイラ オプションを設定するには
A. Visual Studio 開発環境では、モジュールの作成はサポートされていません。


663:デフォルトの名無しさん
09/09/10 20:54:39
>>661
各Processオブジェクトを配列にでも突っ込んで、
終わるときはそれらを順にCloseMainWindowしてけばいい

>>662
moduleもダイナミックリンクだぜ

664:デフォルトの名無しさん
09/09/10 20:55:39
>>661
関連づけされてるアプリ次第。別々にプロセスが立ち上がるなら、
ここのプロセスをそれぞれ閉じるしかないよ。

665:デフォルトの名無しさん
09/09/10 21:06:46
終了もforeachすればいいのかなとは漠然と思うのですが、この方法でcloseするにはそれぞれのプロセス名を知る必要があって、それを取得する方法がわからずにおります。
>>663
オブジェクトを配列につっこむ方法を教えてください。
>>664
プロセスを取得してってこと?
プロセス名だと、ファイル名まではわからないんじゃなかったでしたっけ?
ペイントだと、mspaint.exeとか?


666:デフォルトの名無しさん
09/09/10 21:10:00
>>665
違う。アプリによっては、ひとつのプロセスで複数のウィンドウを開く形になる。
たとえば、デフォルト状態の Explorer とかね。

その場合、最後とのプロセスを殺せば、勝手にまとめて死んでくれるってわけ。

#「ここのプロセス」は「個々のプロセス」ね。

667:デフォルトの名無しさん
09/09/10 23:13:46
>終了もforeachすればいいのかなとは漠然と思うのですが、この方法でcloseするにはそれぞれのプロセス名を知る必要があって、それを取得する方法がわからずにおります。
なんためにphotoProcess変数を使ってるんだ?
同じことを配列(まあListとかのがいいけど)に入れる形でやればいいだけだろ?


668:デフォルトの名無しさん
09/09/10 23:14:57
>>656
これは画面キャプチャだね。
これで取得したオブジェクトを拡大させるってこと?
やはり難しそうだなぁ。

669:デフォルトの名無しさん
09/09/10 23:48:01
仮想リストビューに1000件くらいのアイテムを表示して
一件ずつループ処理でsubitemを書き換えてリストビューのRefreshメソッドを実行するのですが
書き換えた内容が描画されない
表示するアイテムリストとアイテムはそれぞれ専用のクラスを作って管理してて、
書き換え後にアイテムのクラスを見るときちんとデータが入ってる
どんな原因が考えられる?

670:デフォルトの名無しさん
09/09/10 23:52:09
ListView.RetrieveVirtualItemはちゃんと発生してますか?

671:669
09/09/10 23:56:05
>>670
発生しておりまする
リストビューが表示されたときにはCSVから読込まれたデータが
表示されてる状態

672:デフォルトの名無しさん
09/09/11 00:13:36
微妙に671の回答がずれてる気がしないでもない
Refreshしたときに、RetrieveVirtualItemがちゃんと表示領域分発生してるんだね?

673:669
09/09/11 00:22:03
ステップインで確認したらちゃんと発生してますよ
てか、RefreshでRetrieveVirtualItemが発生しないことってあるのん?

674:デフォルトの名無しさん
09/09/11 00:34:28
確認だよ確認 質問者の画面は見れないんだから
で、RetrieveVirtualItemで生成するListViewItemにはちゃんと変更後のデータ入れてる?

675:669
09/09/11 00:41:30
入ってますよ

676:デフォルトの名無しさん
09/09/11 00:43:39
ちなみにBeginUpdateとEndUpdate使っても駄目そうですか?

677:669
09/09/11 00:56:49
だめでした
やろうとしてる編集を最初からCSVにしておくと
読み込むときにきちんと描画される
只単にアイテムを編集しただけでRetrieveVirtualItemでやってることは
最初に読込むときと全く同じなんだけどな
なんか足りないのか

678:デフォルトの名無しさん
09/09/11 01:07:45
>>667
できました。ありがとうございます。


679:デフォルトの名無しさん
09/09/11 01:08:24
コード見ないと分からんね

680:669
09/09/11 01:14:53
private void listView1_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)
{
if (0 <= e.ItemIndex && e.ItemIndex < ItemList.Count)
{
e.Item = ItemList.Items[e.ItemIndex];
}
}
private void button1_Click(object sender, EventArgs e)
{
foreach (Item item in ItemList.Items)
{
item.SetResult("○");
listView1.Refresh();
}
}

コードこんだけ

681:デフォルトの名無しさん
09/09/11 01:29:03
listView1.Refresh();をループから出す

682:デフォルトの名無しさん
09/09/11 01:36:07
起きてる人ー
みんなでH-IIBロケットの打ち上げを見守ろう!
2時ごろ打ち上げだよ!
URLリンク(www.jaxa.jp)


683:デフォルトの名無しさん
09/09/11 02:47:38
板違い。
まぁ、俺も別のとこで打ち上げ見てたけどね。

684:デフォルトの名無しさん
09/09/11 08:18:35
.asxとか死ねよと

685:デフォルトの名無しさん
09/09/11 09:43:30
設定ファイルを作ってそこから設定を読み込もうとしています
設定ファイルはこんな感じです

#setting.txt
#aの値を書き込んでください
a=1
#bの値を書き込んでください
b=hoge
#cの値を書き込んでください
c=hoge hoge

#(#以外でも構いません)で始まる行はスキップ、それ以外の行は=の右辺を取得して変数に代入
このような場合はどうすればいいのでしょうか

686:デフォルトの名無しさん
09/09/11 09:51:04
string line; に対して、
line[0] == '#'
line.Split('=')[1]
か、正規表現使うか。

687:デフォルトの名無しさん
09/09/11 09:52:57
>>685
iniファイルを連想した。
あれのコメントは;だったが。
もし、iniファイルで…ということならWin32APIを呼び出せばOK

688:デフォルトの名無しさん
09/09/11 09:58:29
フォーマット変えていいならXMLを使うことを強くお勧めする
XmlSerializerとか使えば一瞬でできる

689:デフォルトの名無しさん
09/09/11 10:23:27
>>680
Item型は?

690:デフォルトの名無しさん
09/09/11 10:38:53
>>686-688
アドバイスを参考に調べてみます
ありがとうございました

691:デフォルトの名無しさん
09/09/11 11:35:54
【国際】 中国 「IT製品、ソースコード開示せよ。情報漏洩はないから」…日本側が撤回求めるも、予定通り実施へ★5
スレリンク(newsplus板)

692:669
09/09/11 12:50:04
Itemクラス

class Item : ListViewItem
{
string _columns[] = new string[3];
public Item(string[] columns)
{
_columns = columns
}
public Column0 { get { return _columns[0]; } }
public Column1 { get { return _columns[1]; } }
public Column2 { get { return _columns[2]; } }
}

今職場だから思い出して適当に書いてみたけどこんな感じ
何の変哲もない保持用クラス

693:デフォルトの名無しさん
09/09/11 14:13:14
SetResultメソッドとやらでSubItems[n].Textに転写してる?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch