ふらっとC#,C♯,C#( ..
[2ch|▼Menu]
655:デフォルトの名無しさん
09/04/02 21:20:18
>>633
部分信頼とかセキュリティ上の理由でunsafeコードを実行させてくれない仕組みに引っ掛かるとか。

656:デフォルトの名無しさん
09/04/02 21:24:22
struct Data {
 int a, b, c, d, e......;
}

class Cupsel {
  Data data;
}


657:デフォルトの名無しさん
09/04/02 21:49:48
>>655
はーなるほど。そういう仕組みがあったのねぇ
セキュリティポリシーによるようだね。通常はローカルだと問題ないのかな
今までなんも考えなかったわ。ありがとう

658:デフォルトの名無しさん
09/04/02 23:01:07
System.Drawing.Graphics g = Graphics.FromImage(backBuffer);
g.Clear(Color.Black);
g.DrawImage((Image)image, new Point());
Graphics.FromHwnd(panel1.Handle).DrawImage((Image)backBuffer, new Point());

WinFormsで、高速に、ちらつかせずに画像表示をさせたいんですが
どうやるのがいいんでしょうか?
描画するまで画面を更新されないようにするやり方がわかりません・・

それと、加算合成とかをするにはDrawImageでは無理そうですがどうすれば。

659:デフォルトの名無しさん
09/04/03 00:02:18
ちらつき防止はコントロールのDoubleBufferedでいけるんじゃないの?
あと、Graphics.FromHwnd(panel1.Handle)よりもpanel1.CreateGraphics()のほうが普通だと思う。

660:デフォルトの名無しさん
09/04/03 00:02:33
>>634
話は戻るが、そこでusingだ。

661:デフォルトの名無しさん
09/04/03 00:05:46
>>618分かる人いませんか?

662:デフォルトの名無しさん
09/04/03 00:26:07
何だろう。よく分からんけど、バージョン違いのアセンブリを参照してるとか?
参照設定はどうなってる?

663:デフォルトの名無しさん
09/04/03 01:02:12
>>660
usingディレクティブの別名は名前空間と型名だけだったと思うが、
質問者は変数の別名が欲しいといってるんじゃないのかな?

664:デフォルトの名無しさん
09/04/03 01:23:36
>>662
DirectX関係で参照してるのは

DirectX
Direct3D
Direct3DX
DirectInput
DirectSound

です
Direct3DXのバージョンは1.0.2911.0で他のものより新しいのを使ってたんですけど
バージョンをそろえてみても同じエラーが出ます


665:デフォルトの名無しさん
09/04/03 02:44:15
>>664
CS0121?
URLリンク(msdn.microsoft.com)
どうやらオーバーロードなどをしていて,複数の選択肢が暗黙的な型変換で,動作が決定不能になる時に発せられるらしい.
状況によって変わってくるから,他の部分で名前と名前,型と型がバッティングしていないか確かめてみたら?

あと,なんだか Microsoft.DirectX.Direct3D.FontDescription で検索すると,成功している人が少ない雰囲気.

666:デフォルトの名無しさん
09/04/03 07:06:03
アクセス制限機能つきのアプリを作りたいです。

ユーザ権限やパスワード管理機能つけたいんだけど、
一から作るしかないですか?

.NET Framework 2.0 ならいいライブラリがありそうだけど見つけきれません。。。



667:デフォルトの名無しさん
09/04/03 07:51:41
使ったことないけど、System.Security名前空間から適切な制限を見つけてDemaidメソッド呼び出せばいいんじゃね?

668:デフォルトの名無しさん
09/04/03 10:34:17
System.Windows.Form.WebBrowserをIE8に変更できませんか?
OSのIEは8に更新しました

Vista + VS2008 です

669:デフォルトの名無しさん
09/04/03 10:41:42
>>668
更新した時点でもうなっとるがな。

670:デフォルトの名無しさん
09/04/03 15:13:53
windowsアプリで自動アップデート機能をつけようと思うのですが
Program Files以下のファイルを更新するときは
管理者権限が必要ですよね。
Vistaの場合管理者でログインしても
普通にアプリを実行するとWindowsPrincipalはUserになっちゃいますよね。
右クリックで管理者として実行を行わないと
管理者権限で実行されませんよね。
そのため自動アップデートによるアップデートができないと思うのですが、
世に出回っているVista対応アプリはどうやって対処しているのでしょうか?

671:デフォルトの名無しさん
09/04/03 15:18:24
>>670
UAC の昇格をしてるでしょ。

672:668
09/04/03 15:21:40
>>669さん
確認くんで調べたらIE7のままなんです

673:デフォルトの名無しさん
09/04/03 15:25:11
>>672
その結果を貼り付けてみ。互換モードになってるとかの落ちじゃないよね?

674:デフォルトの名無しさん
09/04/03 15:41:32
IE8 WebBrowser Control で検索したらすぐに答えが出てきたぞ
URLリンク(blogs.msdn.com)

675:670
09/04/03 16:08:08
>>671
ユーザが意図的に管理者として実行をして、
昇格をしてもらわないとアップデートできないので、
世に出回ってるアプリはどう対応してるのかということを質問しています。
普通に実行したときはバージョンアップの通知だけで、
通知があったら「管理者として実行」してもらうと言うことになるんでしょうか。
でもそれだとUACを知らない、年配などのライト層は
ずっとバージョンアップできないってことになりますよね。
しかもそれって、自動アップデートではないですよね。

676:デフォルトの名無しさん
09/04/03 16:11:59
>>675
よくわからんけど、セキュリティソフトなんかは予めUAC昇格させる設定を
ユーザーにさせてるんでないの?
都度か一括かの違いで

677:デフォルトの名無しさん
09/04/03 16:17:35
>>675
つか、何言ってんの?

「管理者として実行」しなくても、UAC の昇格を行うことはできるよ。
一般的な方法としては、マニフェストを書いておいて、そのアプリを呼び出す。
新しいバージョンがあるかを確認するアプリと、実際に更新をするアプリに分ける、
って感じだね。

Firefox も、ATOK も HP のプリンタドライバも、そんな感じでやってると
思うけど・・・。

678:デフォルトの名無しさん
09/04/03 16:24:46
Google ChromeがAppData内にインストールされるのは
UACの昇格なしでアップデート可能にする為だって話を聞いたことがある

679:デフォルトの名無しさん
09/04/03 16:25:02
>>677
何言ってんのか分からないのに答えられるってすごいなぁ。
しかも最後、自信なさげなところがなんとも。

680:デフォルトの名無しさん
09/04/03 16:25:20
>>678
そもそも ClickOnce だし。

681:デフォルトの名無しさん
09/04/03 16:27:37
XPユーザーとしてはUACの昇格とかわけわかんないし怖いよ
今はそんなのも気にしなきゃならんのか

682:デフォルトの名無しさん
09/04/03 16:29:51
VistaユーザーだってUACなんか訳わからんよw
Linuxみたいにアクセス権限だけでいいだろって突っ込まれまくりだろ

683:デフォルトの名無しさん
09/04/03 16:32:42
>>679
「UAC 昇格起動」と「修辞的疑問文」でくぐってからまた来てね。


684:デフォルトの名無しさん
09/04/03 16:33:35
全世界の奴がMSに文句つけまくっていじめまくった結果がこれだよ
そして無意味なセキュリティをつけたらフルボッコだよ

685:デフォルトの名無しさん
09/04/03 16:34:51
>>684
× 全世界の奴
○ 狂ったLinuxユーザー

686:デフォルトの名無しさん
09/04/03 16:35:58
なんでLinuxユーザーが文句つけるんだ

687:デフォルトの名無しさん
09/04/03 16:38:37
>>680
ClickOnceって.NETアプリ以外でも使えたのか

ClickOnceと同じ場所を使ってるだけかと思ってたよ

688:デフォルトの名無しさん
09/04/03 16:40:53
>>687
正確には、インストーラとして使ってる、ってとこかと。
そのおかげで、統合認証以外のプロクシを使ってると、インストールすらできないw

689:デフォルトの名無しさん
09/04/03 23:29:47
>>675
Verb を runas にしたら昇格するよ。
アップデータの PE わけて起動させたほうがいいかもしれないけど。
なんとなーく勘違いしてそうなので UAC についてプログラマの視点から
指摘しとくと、昇格ダイアログ出すまではプログラムで可能。
OK ボタン押したら昇格ダイアログ→OK → アップデートってやるんだよ。

あとアップデートに関して言えば、パッチパッケージにすれば明示的な
昇格はいらない(ポリシーにより不可になるし署名が要るけど)。
Program Files 以下でも。実は古くからある機能だが。
実際には、パッチは管理や検証がめんどくさくなるのであまり使われな
いけどな。

>>681
Vista ユーザーからしたら XP の何もなく管理者で動くの不安になる正直
かといって Users で使おうとしたら不便極まりないし。両立できてかなり
いい機能だと思うがなぁ >UAC。リダイレクトとかの機能含めてな。

690:デフォルトの名無しさん
09/04/04 00:26:26
>>665
はい、CS0121です

引数なしのコンストラクタを呼び出しているのに
二つ選択肢があるっていうのがちょっと理解できません・・・
ヘルプのコンパイラ エラー CS0121の使用例は理解できるんですが・・・

エラーは吐いているんですがビルドできるし正常に動作しています
それも理解できないし気持ち悪いです

691:デフォルトの名無しさん
09/04/04 02:14:56
int a=0,b=0,c=0;
int line_count = arrText.Count;
ar_OKPOS = new List<int[]>[line_count];
for (int i = 0; i < ar_OKPOS.Length; i++){
ar_OKPOS[i] = new List<int[]>(new int[][] { new int[2] });
}
foreach (string sOutput in arrText)
{
// 一行ずつ読み込んで,各行をsplitメソッドで分ける
string temp = (string)arrText[a]; // string型にキャスト
string[] temp2 = temp.Split(',');// splitメソッドで文字列アレイにして数える
int col_count = temp2.Length; // 列数を数えているだけ

string[] temp_line = sOutput.Split(',');
for(int i=0;i<temp_line.Length;i++)
{
for(int k=0;k<2;k++){
i = i + k;
ar_OKPOS[a][b][c]=Convert.ToInt32(temp_line[i]);
c++;
}
c = 0;
b++;
}
b = 0;
a++;
}

692:デフォルトの名無しさん
09/04/04 02:24:35
すいません 誤爆してしました

693:デフォルトの名無しさん
09/04/04 08:52:22
デザインパターンとか全然勉強せずにプログラマやってるけど、勉強したほうがいいのかな?

694:デフォルトの名無しさん
09/04/04 08:54:14
デザインパターンはなんかJava臭いよな
C#はオブジェクト指向至上主義じゃないから合わないんじゃない

695:デフォルトの名無しさん
09/04/04 09:52:38
標準のクラスライブラリでも結構それっぽいのはよくでてくるよ
ただjavaと違って、MSはほとんどデザインパターン用語を使わない

696:デフォルトの名無しさん
09/04/04 13:38:17
privateなメンバ変数もprivateなプロパティとして表示させたほうがいいですか?

またメソッドでメンバ変数を利用するときなるべく引数として渡した方がいいですか?
それともメソッド内でいきなり使用しても問題無いですか?

たとえばクラスに以下のようなメソッド等があったとして
private int _num;
public void Method()
 int num = CalcMethod(2);
private int CalcMethod(int num1)
 return num1+_num:
こういう書き方が良いのか
private int _num:
public void Method()
 int num = CalcMethod(2, _num);
private int CalcMethod(int num1. int num2)
 return num1+num2;
こんな書き方のほうがいいのか知りたいです。
例では単なる足し算ですが、複雑な計算をしているという仮定です。

697:デフォルトの名無しさん
09/04/04 13:41:03
演算要素を全て引数で取らせるならstaticにする

698:デフォルトの名無しさん
09/04/04 14:20:05
メソッドを呼び出す側からすれば,メソッド呼び出しはオブジェクトを操作することなので
内部状態を存分に使ってもらって構わない気がする.

699:デフォルトの名無しさん
09/04/04 15:33:03
ありがとう
なるべく引数で渡したほうが、その中で完結するのでわかりやすい気がして
じゃあ、あんまり気にしなくていいってことかな?


700:デフォルトの名無しさん
09/04/04 15:58:22
計算処理のように内部状態に関係なしに定義できるものは、
内部状態非依存(static)の方が単体テストしやすい

まあ、その例くらいの規模なら大して変わらないんだが

701:デフォルトの名無しさん
09/04/04 16:06:09
>>696
むしろそのメソッドを定義したクラスはどんな責任と制約をもってんのよ?
メソッド単体じゃあなんともいえない

>699
時と場合による
プログラミングしやすい分かりやすさもあれば、
利用しやすいわかりやすさもある

702:デフォルトの名無しさん
09/04/04 17:48:14
VC#単体(他から持ってきたライブラリを使わず)で開発したソフトやゲームを
販売する場合、ライセンス等の問題ってありますか?


703:デフォルトの名無しさん
09/04/04 17:59:31
場合による。

704:デフォルトの名無しさん
09/04/04 21:17:48
ミサイル防衛システム作りたいんですがヒントだけでもください

705:デフォルトの名無しさん
09/04/04 21:25:07
MDIで作成した子フォームに含まれるコントロールを取得後、アクセスしたいんですが
foreachでいちいちループ回さないといけない・・・
なんか他にいい方法ないでしょうか?
子フォームはアクティブな状態のものです

if (!(this.ActiveMdiChild as Form == null))

{
foreach (Control Ctrl in (this.ActiveMdiChild as Form).Controls)
{
 if (Ctrl is TextBox /*例としてテキストボックス*/ )
 {
  //処理
 }
}
}


706:デフォルトの名無しさん
09/04/04 21:41:58
全コントロールを対象に処理が必要なら foreach で回さざるを得ないだろ。
特定のコントロールのみを対象にするなら Panel か UserControl に貼り付けて
必要なコントロールへのアクセスを容易にすればいいよ。

707:705
09/04/04 21:54:17
ん〜じゃあ無理か
Panelのリストを管理するとまた手間がかかりますしねえ・・・
どうもありがとうございました

708:デフォルトの名無しさん
09/04/04 22:05:22
動的に作成する場合でもIList<>に入れればいいし、
あらかじめポトペタならコントロールが限られてるから
どちらにしても最低限のループでいけるんじゃないの?

709:デフォルトの名無しさん
09/04/04 22:16:50
Linqでコントロールの種類ごとに連想配列に分配するクエリを作れば?

710:デフォルトの名無しさん
09/04/04 22:29:30
>>702
ないよ

711:デフォルトの名無しさん
09/04/05 00:12:49
Form activeChild = this.ActiveMdiChild as Form;
if (activeChild != null)
{
  activeChild.Controls.Where(c => c is TextBox).ToList<TextBox>().ForEach(t =>
  {
    // 処理
  });
}

かえって煩わしいな。

712:デフォルトの名無しさん
09/04/05 00:29:55
>>711
ん?
実験してみようとしたのだが、インテリセンスにWhere()が表示されないのだがなんでだ?

713:デフォルトの名無しさん
09/04/05 00:42:19
ControlCollectionがIEnumerable<Control>を実装してないからか?

714:デフォルトの名無しさん
09/04/05 00:43:46
だな
気がつかなかった!すげー便利じゃん!と思ったのにorz

715:n
09/04/05 00:52:48
今までたくさんのサイトから通報者つのりあと少し
です
こいつは違反出品で昨日二度削除されました
URLリンク(auok.auone.jp)
空き巣に入られた?以上では‥
薔薇チョコ洋子さんは靴の転売や上履き二回削除されてるのに
今回は長期使用の文を消して書いてます
悪質なので評価欄の誹謗中傷の理由で通報お願いします

URLリンク(auok.auone.jp)
わいせつ物

URLリンク(auok.auone.jp)
わいせつ物
三箇所違反ですのでよろしくお願いします


716:デフォルトの名無しさん
09/04/05 02:53:12
this.ActiveMdiChild.Controls.Cast<Control>().Where()とか?

717:デフォルトの名無しさん
09/04/05 03:03:10
クラス内の自動プロパティを初期化したいのですがコンストラクタ内でするしかないのでしょうか?
例えば
public string Name{get;set;}
というものがあって、Nameは始めはnullですが、""に初期化しておきたいのです。
フィールドでしたら
private string Name = "";
と出来ます。
プロパティの量だけコンストラクタにも初期化する量が増えてしまうのでフィールドのように出来れば一度に初期化したいのですが方法はあるのでしょうか?

718:デフォルトの名無しさん
09/04/05 03:03:27
>708 がベストだろ

719:デフォルトの名無しさん
09/04/05 03:10:31
クラスを継承したときに基本クラスのメソッドにコードを追加するように書くにはわかりました。

720:デフォルトの名無しさん
09/04/05 09:26:10
>>717
ありません
自動プロパティの使用をやめるか普通にコンストラクタで初期化してください

721:デフォルトの名無しさん
09/04/05 09:52:29
>>717
リフレクションでstring型のプロパティを一括初期化できなくもないがバグの元だな

722:デフォルトの名無しさん
09/04/05 09:58:22
そのためのオブジェクト初期化子なんだろうか

723:デフォルトの名無しさん
09/04/05 09:59:50
ヘジさんが自動プロパティに必死で抵抗してたのは直接初期化できないからなのかな

724:デフォルトの名無しさん
09/04/05 10:12:36
自動プロパティって、文法的にインターフェースでの宣言と一緒なのがちょっと気になるっちゃ気になる。

int Method();

とだけ書いたらメソッドの中身ができちゃうようなもんだからなぁ。
パッと見同じだけど全然意味の違うものってのは、
ミスの原因だし、読むときの混乱招くから。

725:デフォルトの名無しさん
09/04/05 10:12:47
コンストラクタで初期化するくらいなら、
タイピング量的に自動プロパティである必要がぜんぜんないな

726:デフォルトの名無しさん
09/04/05 10:14:42
もう、自動プロパティを自動で普通のプロパティに展開するユーティリティを使えばいいよ

727:デフォルトの名無しさん
09/04/05 10:22:42
private string _test;
public string Test { get _test; set _test; }

こういう糖衣構文を可能にするだけでよかったんだよ

728:デフォルトの名無しさん
09/04/05 10:26:55
糖衣構文といいたいだけのやつ増えすぎ

729:デフォルトの名無しさん
09/04/05 10:29:42
構文糖を可能にするだけでよかったんだよ

730:デフォルトの名無しさん
09/04/05 10:30:46
public property string Test = "";

でいいんじゃないの

public readonly property string Test = "";

とか

731:デフォルトの名無しさん
09/04/05 10:36:05
public string Test { get GetTest(); set SetTest(value); }
も可能そうだな


732:デフォルトの名無しさん
09/04/05 10:41:00
>>731
それは意味がわからない。普通にかけばいいだろ
public string Test { get { return GetTest(); } set { SetTest(value); } }

733:デフォルトの名無しさん
09/04/05 10:41:50
インターフェイスにプロパティを宣言するときの書き方と合わせたかったんだろ
美学ってやつなんだろう

734:デフォルトの名無しさん
09/04/05 10:48:09
たとえ美学でも、読み取り専用にするprivate set;はせっかくの省力構文を台無しにしているな
public string Test { get; }
これで何がまずいのだろう

735:デフォルトの名無しさん
09/04/05 10:48:47
event の構文が

event DelegateType Variable;
event DelegateType Variable { add { ...] remove { ...} }

なのを考えると、

property VarType Variable;
property VarType Variable { set { ... } get { ...} }

がよかった気もするなぁ。


736:デフォルトの名無しさん
09/04/05 10:50:10
>>732
楽になるじゃん
それに変数とメソッドを同時に書くこともある
public string Test { get GetTest(); set _test; }


737:デフォルトの名無しさん
09/04/05 10:52:33
property Name: string read FName write FName;
もうこれでいいよ

738:デフォルトの名無しさん
09/04/05 10:54:11
>>735
それいいよね
読み取り専用プロパティは
readonly property VarType Variable;
にすればいいし

739:デフォルトの名無しさん
09/04/05 11:03:07
>>734
初期化も何もできないじゃん

740:デフォルトの名無しさん
09/04/05 11:26:12
>>739
private set;と書いたことにする

741:デフォルトの名無しさん
09/04/05 11:44:34
それなら>>735スタイルにしてgetも書かないようにしないとおかしい
アクセサを宣言する意味でgetやsetを書いてるのに

742:デフォルトの名無しさん
09/04/05 13:04:59
>>740
( ゚д゚ )

743:デフォルトの名無しさん
09/04/05 15:08:15
アクセス修飾子をpublicとprivateだけと思ってる奴が多いようだな

744:デフォルトの名無しさん
09/04/05 16:25:18
そんな奴いないだろw
もともとはプロパティのアクセサにアクセスレベルは指定できなかったんだよ
public get; protected set;みたいなのはそもそも想定されてなかった
だから別に>>735の形になっててもおかしくはない

745:デフォルトの名無しさん
09/04/05 18:13:05
addとremoveが必須なeventとgetとsetは片方あればいいプロパティじゃ初めから条件が違うな

746:デフォルトの名無しさん
09/04/05 18:55:27
話の流れを全部理解しているわけじゃないが、
そういうシンメトリックかどうかって話じゃないだろうw

素直に(VB方式ともいう)propertyってキーワードを導入しておいた方が
可読性の観点からは好ましかったんじゃないかって話なんじゃないの?

747:デフォルトの名無しさん
09/04/05 22:23:51
でもevent 型 名前;と型 名前 { get; set; }じゃ差がありすぎるからなあ
イベントを理解する上でプロパティとの類似性はかなり重要なのに
構文上全然違う種類のものになっちゃってるのはさすがに

748:デフォルトの名無しさん
09/04/05 22:43:42
そういや、結構いろんな言語に精通してる同僚が最近 C# 触り始めたんだけど、
event 知らずに普通にデリゲート型のプロパティ使ってたなぁ。


749:デフォルトの名無しさん
09/04/05 22:51:16
イベントって機能がデリゲートで実現されていることを知らずにイベントを
使ってるって話ならありそうだが、デリゲート押さえてるのにイベント知らない、
なんてこと普通はありえん気がするけどね。

750:デフォルトの名無しさん
09/04/05 22:55:20
eventって別に必要ない機能だろ

751:デフォルトの名無しさん
09/04/05 22:58:49
javaなんかでよく出てくるgetHoge, setHogeパターンを言語に組み込んだのがプロパティ
同様にaddHogeListener, removeHogeListenerパターンを言語に組み込んだのがイベント

752:デフォルトの名無しさん
09/04/05 23:29:37
言語に組み込む組み込まないの話ではないだろ

753:デフォルトの名無しさん
09/04/05 23:49:33
>>749
「デリゲートはイベント処理用のもの」って認識だとそうなんだけど、
「関数ポインタの便利版」って認識だと、
関数ポインタのプロパティでイベントハンドラ取ればいいやってなってもおかしくないかと。


754:デフォルトの名無しさん
09/04/05 23:56:59
もしプロパティを使うならデリゲートのコレクションを返すべきだろ
button.ClickEventHandlers.Add(new EventHandler(button_Click));
これなら意味的には同じ

755:754
09/04/05 23:59:32
外からの要素へのアクセスはできないようにしないといけないよもちろん
マルチキャストでいいだろと突っ込まれそうだから一応

756:デフォルトの名無しさん
09/04/06 00:00:30
Formsのコントロールの初期化をデザイナーで作っているところなんだが、
ツールバーのボタンが横に並んだ1つづりのPNGファイルを
ImageListを使って切り出して使おうとしているのだがうまくいかない。

System.Windows.Forms.ImageList il = new System.Windows.Forms.ImageList();
il.TransparentColor = System.Drawing.Color.Transparent;
il.ImageSize = new System.Drawing.Size(24, 24);
il.Images.AddStrip(Resources.tool);

こんな風に書いてデザイナーに読ませると、AddStrip()が認識できずに落ちてしまうようだ。
仕方がないのでpartialされたForm本体側で追加で初期化してるんだが、当然ながらデザイナーではプレビューできない。
画像の切り出し、切り出したチップをそれぞれのコントロールで使用したいんだがどうしたらいいだろうか。

757:デフォルトの名無しさん
09/04/06 00:10:38
>>748
eventをつけた場合とつけない場合は何が違うのですか?
public event EventHandler Unko;
public EventHandler Unko

758:デフォルトの名無しさん
09/04/06 00:13:42
>>757
ググれかす
見た目としては、eventだと外から行える操作がデリゲートの追加と削除だけになる。

759:デフォルトの名無しさん
09/04/06 00:17:51
>>757
Unkoの硬さが違ってくる

760:デフォルトの名無しさん
09/04/06 00:23:11
>>758-759
ありがとう。
何となく分かったよ
Unkoの硬さが+=と-=だけになるってことですね

761:デフォルトの名無しさん
09/04/06 00:28:52
>>756
デザイナで設定するのは無理なんじゃないの
とりあえずImageListプロパティだけ設定して,Tagプロパティにインデックスを入れといて
後でコードから舐めてImageIndexプロパティに設定し直すとか

762:デフォルトの名無しさん
09/04/06 01:04:40
>>761
ありがとう。「無理」という返事を聞いてある意味安心した。

どうせデザイナーで作る部分はある程度静的な割付になるので、わざわざTagに入れてループをまわさなくても、
ImageList.Images プロパティをControl.Image に直接代入していくだけで十分だね。

763:デフォルトの名無しさん
09/04/06 01:22:48
>>762
ImageList継承して"ImageStrip"のようなプロパティを追加するとか、
あるいは最初から目的のイメージを持たせちゃうとかすれば出来る気もする。

っていうか、なんでわざわざそんなC#向きでない作り方をするんだろう。
なんでも道具にあった作り方ってあると思うんだけど。

764:デフォルトの名無しさん
09/04/06 01:24:20
あーImageListってシールされてるのか。。

765:デフォルトの名無しさん
09/04/06 01:59:32
String型がシールされてる上にIStringのようなインターフェイスもないってどういうこと?
String型に限らずやたらシールされると拡張できなくて異常に不便

766:デフォルトの名無しさん
09/04/06 02:02:16
C#の入門誌のオススメ教えて

767:デフォルトの名無しさん
09/04/06 02:04:16
C#に入門書は必要ない
ぐぐれば腐るほどでてくるからな・・・
強いて言えば逆引き系のものがいいよ

768:デフォルトの名無しさん
09/04/06 02:04:39
継承は最低の方法だってみんな分かって来てるじゃない
それはともかくStringはIEnumerable<char>として扱うと便利だよ

769:デフォルトの名無しさん
09/04/06 03:31:43
>>763
コントロールで使う画像の処理をImageListに任せるのは、
Win32SDK時代から続く古式ゆかしいお作法なんだ。

770:デフォルトの名無しさん
09/04/06 08:32:28
> それはともかくStringはIEnumerable<char>として扱うと便利だよ
これは気づかなかった。ありがとう

771:デフォルトの名無しさん
09/04/06 09:03:50
デザイナーいるとかうらやましいなおい・・・・

772:デフォルトの名無しさん
09/04/06 09:26:25
>>765
恥ずかしいレスだなおいw

773:デフォルトの名無しさん
09/04/06 09:31:03
>>771
それはボケなのか……?

774:デフォルトの名無しさん
09/04/06 10:42:32
Stringがsealedなのはimmutableにするため
変更できない方が扱いやすいから

775:デフォルトの名無しさん
09/04/06 17:54:34
扱いやすいっていうか、継承を禁止しないとイミュータブルであることを保証できない。

776:デフォルトの名無しさん
09/04/06 18:04:25
なんとなくだが、>>774
"stringはimmutableであった方が扱いやすい"
と言いたかったのではないかと思う。

777:デフォルトの名無しさん
09/04/06 21:19:49
>>766
洋書なら色々あるけど、邦訳版が出てないのが多い・・・。

778:デフォルトの名無しさん
09/04/07 02:18:55
C#って検索数がいまいちなんだよね。
なんで?

779:デフォルトの名無しさん
09/04/07 02:34:22
>>778
記号とか入いってるとかは検索エンジン的にマイナスな気がする。
あと、なんだかんだいって後発だしね。
それと、一般名詞そのまま使ってるrubyとかと比べりゃそりゃ少なくなる。

780:デフォルトの名無しさん
09/04/07 03:42:38
思いつくままに検索してみた。言うほど少なくは無いようだが

php の検索結果 約 9,700,000,000 件
javascript の検索結果 約 680,000,000 件
vb の検索結果 約 657,000,000 件
java の検索結果 約 377,000,000 件
scheme の検索結果 約 107,000,000 件
ruby の検索結果 約 102,000,000 件
c++ の検索結果 約 101,000,000 件
perl の検索結果 約 88,000,000 件
c# の検索結果 約 63,900,000 件
python の検索結果 約 62,300,000 件
delphi の検索結果 約 49,500,000 件
lisp の検索結果 約 8,290,000 件
fortran の検索結果 約 7,720,000 件
cobol の検索結果 約 6,530,000 件
c++/cli の検索結果 約 4,680,000 件

781:デフォルトの名無しさん
09/04/07 03:54:22
>>780
ごめんそれ違う。

漏れが言ったのは、グーグルトレンドの方。

782:デフォルトの名無しさん
09/04/07 04:47:38
>>780
発想は面白いよ発想は

783:sage
09/04/07 13:13:32
vb.net の private shared は C# でいうとなんですか?
private partial ? private protected?

784:デフォルトの名無しさん
09/04/07 13:17:51
private static

785:デフォルトの名無しさん
09/04/07 13:19:16
thx!

786:デフォルトの名無しさん
09/04/07 14:11:03
VB.netの存在意義がわからない
初心者向けならジェネリックやLinqの拡張をすべきではないと思うんだが・・・

787:デフォルトの名無しさん
09/04/07 14:12:59
VB.NETはVBプログラマ用の隔離病棟もしくはオブジェクト指向リハビリ施設

788:デフォルトの名無しさん
09/04/07 14:13:04
>>786
それは、貴方の考えた存在意義と違うってだけでしょう。

789:デフォルトの名無しさん
09/04/07 18:15:55
C#>VBってのはC#でオブジェクト指向を勉強した奴がやけに言いたがるようだけど
他から見たらチェイサーとクレスタ


790:デフォルトの名無しさん
09/04/07 18:24:42
そりゃ.NETがベースにあるからだろ

791:デフォルトの名無しさん
09/04/07 18:28:30
.NETのWebBrowserコンポーネントで
RichTextBoxのSelectionColorプロパティみたいに、文字列をドラッグしたときの選択色を変える方法ありませんか?

792:デフォルトの名無しさん
09/04/08 05:02:52
Microsoft Visual C++ Express Edition
このコンパイラで一度「デバッグ無しで開始」でコンパイル成功するとソースを書き換えてもプログラムが変わらないようです
今までは少しソースを書き換えようと思ったら新規作成で新しいソース作ってコピペを繰り返してたんですがいい加減ソースの管理がキツいです
誰か助けてください

793:デフォルトの名無しさん
09/04/08 05:09:03
バイト代は出ますか?

794:デフォルトの名無しさん
09/04/08 05:14:13
>>792
全ては君の勘違い

795:デフォルトの名無しさん
09/04/08 06:02:20
>>792
『Microsoft Visual C# Express Edition』で開発していると仮定しての話だが、(スレタイ読めよ!)
確かにVC++と違って C#の開発のときはアプリの実行ボタンでビルドが更新されないことがあるようだ。
しかし、コンパイルないしビルドボタンを押せば問題ないはず。
デバッグ無しで開始 や デバッグ実行 のボタンとは別にあるぞ。

796:デフォルトの名無しさん
09/04/08 09:47:57
>>792
リビルドしてみた?

797:デフォルトの名無しさん
09/04/08 09:53:21
むしろ自動ビルドしてるならクリーンアップ?で
さもなくばexploreでファイル削除

798:デフォルトの名無しさん
09/04/08 15:22:07
.net のプログラムを C#に書き換えています。
.net におけるshadow(オーバーライドの一種で引数も返り値も変更可能なもの)
はC#だとどういう風にトランスレートすればいいんですかね?

799:デフォルトの名無しさん
09/04/08 15:26:15
.net のプログラムってなに?VB?

800:デフォルトの名無しさん
09/04/08 15:27:01
もちろんC#

801:デフォルトの名無しさん
09/04/08 15:27:15
隠蔽のnew

802:デフォルトの名無しさん
09/04/08 15:30:02
vb.netっす

803:デフォルトの名無しさん
09/04/08 15:32:06
VBではoverridesとshadowが別なのが良くわかんないね。
overridesがほぼC#のnewと同じ。
shadowとまったく同じものはなかったかと。

804:デフォルトの名無しさん
09/04/08 15:35:20
それでは Public Shadow Property X は
public new override X
{get return ...みたいな感じで書けばいいってことですか?

805:デフォルトの名無しさん
09/04/08 15:36:43
ああちがうか、そもそもoverrideとoverridesのちがいがわかってませんでした。
勉強してきます。

806:デフォルトの名無しさん
09/04/08 15:43:35
WebBrowserのDocumentで、mshtmlを経由してiframeの中身にアクセスしようとするとUnauthorizedAccessExceptionになるのですが、
これを回避するにはどうすればいいのでしょうか。

807:デフォルトの名無しさん
09/04/08 18:51:30
public class Bar
inherits Foo
  overrides sub f()
  end sub
  shadows sub g()
  end sub
  overloads sub h()
  end sub
end class
をリフレクションで調べるとこういう違いがあるようだべさ。

public class Bar : Ansi,Auto
    extends public class Foo : Ansi,Auto
        public virtual Void f()
        public Void g()
        public Void h(),HideBySig
        public constructor Void .ctor(),SpecialName

C#の場合全部のメソッドにHideBySigが付いてるんだよね。


808:デフォルトの名無しさん
09/04/08 19:28:38
すみません。馬鹿な質問いいですか?

フォームにラベルがいくつかありまして、それぞれ
lbl001
lbl002
lbl003
という名前になっています。

で引数に001とか002を渡すと通し番号の一致するラベルのテキストを""に変えるメソッドを
作りたいのですが、どうしたら良いのでしょうか?

解りにくい文章ですみませんが、お願いします。



809:808
09/04/08 19:30:47
private void hoge(string number)
{
lbl+number.text="";
}
という感じなのですが・・・

810:デフォルトの名無しさん
09/04/08 19:36:25
public void ClearLabel(string labelName)
 Control control = this.Controls.Find(labelName, false)[0].Text = "";

thisはForm


811:デフォルトの名無しさん
09/04/08 19:39:39
ああ、最初の変数宣言はイラネ

public void ClearLabel(string labelName)
 Control control = this.Controls.Find(labelName, false)[0];
 control.Text = "";

または

public void ClearLabel(string labelName)
 this.Controls.Find(labelName, false)[0].Text = "";


812:デフォルトの名無しさん
09/04/08 19:42:38
public void Func(int number)
{
string name = "lbl" + number.ToString("000");
foreach (FieldInfo info in this.GetFields())
{
if (name == info.Name)
{
Label label = (Label)info.GetValue(this);
label.Text = "";
}
}
}

813:デフォルトの名無しさん
09/04/08 19:43:55
ラベルを配列に入れりゃいいんじゃないの

814:デフォルトの名無しさん
09/04/08 19:46:45
>>808
そういうことをするならラベルをコレクションで管理しとけ
リフレクションを使うのはあくまで応急処置

最初からコレクションで生成してもいいし、どうしてもデザイナを使いたいなら以下のようにする
var labels = new List<Label>();
labels.Add(lbl001);
labels.Add(lbl002);
labels.Add(lbl003);

815:808
09/04/08 19:58:30
みなさまありがとうございました!
>>811
public void ClearLabel(string labelName)
 this.Controls.Find(labelName, false)[0].Text = "";

この場合labelNameは"002"とかでもlbl002を見つけてくれるのでしょうか?

>>812
なるほど。僕でも判る解りやすいコードですね

>>814
おっしゃる通りです。以降気をつけます

816:デフォルトの名無しさん
09/04/08 20:21:07
>>815
見つけてくれないからlabelNameを自分で作成すれ

817:808
09/04/08 21:27:47
>>816
ありがとうございました!

僕はデザイナでしかコントロールを置いたことがないので
名前の重複がありうるなんて知りませんでした。

なので名前のわかっているコントロールを探すなんてナンセンスな感じを
うけましたが、自分が無知だっただけでした!

818:デフォルトの名無しさん
09/04/08 21:49:25
何も解かってないことが解かった

819:デフォルトの名無しさん
09/04/08 21:54:33
>>817が何を言ってるのかまるでわからない・・・

820:デフォルトの名無しさん
09/04/08 21:56:19
なんとなく理解できる俺もほ乳類を名乗って問題無いのか・・・

821:デフォルトの名無しさん
09/04/08 23:41:34
>819
多分Nameプロパティとフィールド参照名をごっちゃにしてるんだろ。
>817
参照名はスコープ内で重複しないけど、コントロールごとに設定できるNameプロパティの値は重複可能。
デザイナーは勝手に「Name = 参照名」に設定してるから一意に見えるだけ。自前でNameを設定してなければ、
int num = 2;
Label label = this.Controls[ "lbl" + num.ToString("000")] as Label;
if( label != null ) { 処理 } else { エラー処理とか }
自前のコードでNameを設定してて同じNameの奴が重複してたら、最初に追加されたやつ(普通はデザイナーが作った方)が返ってくる。
どうしてもフィールド名のほうでアクセスする必要がある場合は、>812みたいにリフレクションを使う。
でもクラス内で完結することに使うことはまずない。

822:デフォルトの名無しさん
09/04/09 00:09:57
Regexクラスを使った正規表現って
交差演算子「&&」は使えませんよね?

823:デフォルトの名無しさん
09/04/09 00:12:33
古語でも可也

824:デフォルトの名無しさん
09/04/09 00:18:44
>>822
MSDN読め。


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5258日前に更新/200 KB
担当:undef