C♯相談室 Part2
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん♯
NGNG前スレ
http://piza2.2ch.net/test/read.cgi/tech/977112364/
Insider.NET
http://www.atmarkit.co.jp/fdotnet/
.NET関連リンク
http://www.atmarkit.co.jp/fwin2k/rescenter/indexpage/net.html
0232デフォルトの名無しさん
NGNG仮想関数を下位クラスで隠蔽する時に使う?
0233デフォルトの名無しさん
NGNG本当にありがとうございました。
0234デフォルトの名無しさん
NGNG0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNG0237デフォルトの名無しさん
NGNGDelギコが生きてたら激怒しそうな内容だな。
0238デフォルトの名無しさん
NGNG0239通りすがりのプログラマ
NGNG「オブジェクト指向との別れ」の理由は納得できるところも少なくないが、
デザパタとかは、どう認識してるのか、聞いてみたい。
0240デフォルトの名無しさん
NGNG前回終了時の位置やフォームのサイズを記憶するにはどうすればいいでしょうか?
0241デフォルトの名無しさん
NGNG要はいわゆるコンポーネント指向ってことか。
センセーショナルに書きゃあいいってもんじゃねーぞ川俣。
0242デフォルトの名無しさん
NGNGレジストリとかiniファイル。
.NET的にはXMLの方がいいのかな。
0243デフォルトの名無しさん
NGNGコンストラクタとわからなかった!詩嚢。
0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNGSystem.Web.Mail
0249デフォルトの名無しさん
NGNG悪さはできなかった。(藁
0250デフォルトの名無しさん
NGNGリストをソートしたいのですが、ツールボタンと同じように
分岐というイマイチな方法でないとダメでしょうか?
listView1.ColumnClick += new ColumnClickEventHandler(listView1_ColumnClick);
private void listView1_ColumnClick(object sender, ColumnClickEventArgs e) {
if (e.Column == 0) {
// ソート
}
}
0251デフォルトの名無しさん
NGNG具体的なサンプルってあります?
0252デフォルトの名無しさん
NGNGのでしょうか?
0253デフォルトの名無しさん
NGNGperlの連想配列みたいなことを配列アクセスでやってたよ。
だからできるんじゃない?
0254デフォルトの名無しさん
NGNGありがとうございます.従来のC++のソースを移植しているんですが
なかなか一筋縄にはいきませんね.
0255デフォルトの名無しさん
NGNG内容によっては無理に一対一に対応させるよりも、
やり直したほうが早いかもね。
0256デフォルトの名無しさん
NGNGできればXMLで。
0257名無しさん♯
NGNGそうするしかないと思うよん。
問題は、ソートの部分をどこまで簡潔に記述できるかだと思う...。
>>251
>>256
XmlTextReaderを使うととっても便利よん。
単純なサンプル
http://www.eponymous.fsnet.co.uk/dotnetfaq.htm#11.4
やや込み入ったサンプル
http://support.microsoft.com/support/kb/articles/Q301/2/28.ASP
0258名無しさん♯
NGNGとりあえず、というレベルね。
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using System.Xml;
class TestForm : Form
{
public TestForm() {
this.Load += new EventHandler(this.form_Load);
this.Closing += new CancelEventHandler(this.form_Closing);
}
const string CONFIG_FILE_NAME = "config.xml";
private void form_Load(object sender, EventArgs e) {
XmlTextReader reader = null;
try {
reader = new XmlTextReader( new StreamReader(CONFIG_FILE_NAME) );
int x = 0;
int y = 0;
int width = 0;
int height = 0;
while ( reader.Read() ) {
if (reader.NodeType != XmlNodeType.Element) {
continue;
}
switch (reader.Name) {
case "x":
reader.Read();
x = Convert.ToInt32(reader.Value);
break;
0259名無しさん♯
NGNGcase "y":
reader.Read();
y = Convert.ToInt32(reader.Value);
break;
case "width":
reader.Read();
width = Convert.ToInt32(reader.Value);
break;
case "height":
reader.Read();
height = Convert.ToInt32(reader.Value);
break;
}
this.Bounds = new Rectangle( new Point(x, y), new Size(width, height) );
}
}
catch (FileNotFoundException x) {
Debug.WriteLine("Exception : " + x.Message);
}
finally {
if (reader != null) {
reader.Close();
}
}
}
private void form_Closing(object sender, CancelEventArgs e) {
XmlTextWriter writer = null;
try {
writer = new XmlTextWriter( new StreamWriter(CONFIG_FILE_NAME) );
writer.Formatting = Formatting.Indented;
writer.Indentation = 2;
0260名無しさん♯
NGNGwriter.WriteStartElement("configuration");
// ポジションの保持
Point position = this.Location;
writer.WriteStartElement("position");
writer.WriteStartElement("x");
writer.WriteString( position.X.ToString() );
writer.WriteEndElement();
writer.WriteStartElement("y");
writer.WriteString( position.Y.ToString() );
writer.WriteEndElement();
writer.WriteEndElement(); // position
// サイズの保持
Size size = this.Size;
writer.WriteStartElement("size");
writer.WriteStartElement("width");
writer.WriteString( size.Width.ToString() );
writer.WriteEndElement();
writer.WriteStartElement("height");
writer.WriteString( size.Height.ToString() );
writer.WriteEndElement();
writer.WriteEndElement(); // size
writer.WriteEndElement(); // configuration
}
finally {
if (writer != null) {
writer.Close();
}
}
}
[ STAThread ]
public static void Main() {
Application.Run( new TestForm() );
}
}
0261デフォルトの名無しさん
NGNGXMLがきちんと整形されてる。(・∀・)イイ!
0262デフォルトの名無しさん
NGNG0264デフォルトの名無しさん
NGNG> 問題は、ソートの部分をどこまで簡潔に記述できるかだと思う...。
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ´∀`)/< 先生!サンプルください!
_ / / / \
\⊂ノ ̄ ̄ ̄ ̄\  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
||\ \
||\|| ̄ ̄ ̄ ̄ ̄||
|| || ̄ ̄ ̄ ̄ ̄||
.|| ||
0265250
NGNGありがとうございます。
うーん、イマイチだわ。columnHeader1.Clickだったらいいのに。
ソートはメインアイテムだとこのように簡単なのですが、
サブアイテムだと自分で作らないといけないんですよね。>>264
private void listView1_ColumnClick(object sender, ColumnClickEventArgs e) {
if (e.Column == 0) {
if (listView1.Sorting == SortOrder.Ascending) {
listView1.Sorting = SortOrder.Descending;
// columnHeader1.Text = "名前 ▽";
}
else {
listView1.Sorting = SortOrder.Ascending;
// columnHeader1.Text = "名前 △";
}
}
}
0266Delフサギコ
NGNG/:\.____\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|: ̄\ ミ ゚Д゚ミ\< C#かっこいいじゃん!>>XML
|: |: ̄ ̄U U ̄:| \__________
.______
|: :\ \
|: |: ̄ ̄U U ̄:| 挟まって痛い
0267名無しさん♯
NGNG実は、昼間に作成済みだったりする。(藁
using System;
using System.Collections;
using System.Windows.Forms;
class Form1 : Form
{
ListView listView1 = new ListView();
public Form1() {
listView1.Dock = DockStyle.Fill;
listView1.View = View.Details;
listView1.ColumnClick += new ColumnClickEventHandler(this.listView1_ColumnClick);
// カスタムComparerを設定
listView1.ListViewItemSorter = new Comparer1();
// とりあえず3列作る
ListView.ColumnHeaderCollection header = listView1.Columns;
header.Add( new ColumnHeader() );
header.Add( new ColumnHeader() );
header.Add( new ColumnHeader() );
// データを設定(この時点では並べ替えなし)
ListView.ListViewItemCollection items = listView1.Items;
items.Add( new ListViewItem(new string[] { "bbb", "ccc", "aaa" }) );
items.Add( new ListViewItem(new string[] { "aaa", "bbb", "ccc" }) );
items.Add( new ListViewItem(new string[] { "ccc", "aaa", "bbb" }) );
this.Controls.Add(listView1);
}
private void listView1_ColumnClick(object sender, ColumnClickEventArgs e) {
Comparer1 comparer = listView1.ListViewItemSorter as Comparer1;
if (comparer.SortColumn == e.Column) {
if (comparer.Sorting == SortOrder.Ascending) {
comparer.Sorting = SortOrder.Descending;
}
else {
comparer.Sorting = SortOrder.Ascending;
}
}
else {
comparer.SortColumn = e.Column;
comparer.Sorting = SortOrder.Ascending;
}
listView1.Sorting = comparer.Sorting;
listView1.Sort();
}
0268名無しさん♯
NGNGclass Comparer1 : IComparer
{
public Comparer1() {
}
SortOrder sorting = SortOrder.None;
public SortOrder Sorting {
get { return sorting; }
set { sorting = value; }
}
int sortColumn = 0;
public int SortColumn {
get { return sortColumn; }
set { sortColumn = value; }
}
public int Compare(object x, object y) {
if (sorting == SortOrder.None) {
return 0;
}
string s1 = (x as ListViewItem).SubItems[sortColumn].Text;
string s2 = (y as ListViewItem).SubItems[sortColumn].Text;
if (sorting == SortOrder.Ascending) {
return s1.CompareTo(s2);
}
else {
return s2.CompareTo(s1);
}
}
}
[ STAThread ]
public static void Main() {
Application.Run( new Form1() );
}
}
0269デフォルトの名無しさん
NGNGすごい!!ありがとうございます!!
でも、
∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(; ´∀`)/< 先生!サンプルが難しいです!
_ / / / \
\⊂ノ ̄ ̄ ̄ ̄\  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
||\ \
||\|| ̄ ̄ ̄ ̄ ̄||
|| || ̄ ̄ ̄ ̄ ̄||
.|| ||
0270251
NGNG> >>250
> そうするしかないと思うよん。
> 問題は、ソートの部分をどこまで簡潔に記述できるかだと思う...。
>
> >>251
> >>256
> XmlTextReaderを使うととっても便利よん。
>
> 単純なサンプル
> http://www.eponymous.fsnet.co.uk/dotnetfaq.htm#11.4
>
> やや込み入ったサンプル
> http://support.microsoft.com/support/kb/articles/Q301/2/28.ASP
どうも有難うございます。
やはりこれからは「ini」->「xml」になるのでしょうかね?
まぁ人の好みだとは思いますが。。
0271デフォルトの名無しさん
NGNGhttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=333&forum=7
0272デフォルトの名無しさん
NGNG彼に関してはこのスレでどうぞ……
★デブプログラマーってどうよ★
http://mentai.2ch.net/test/read.cgi/prog/1001686611/
0273デフォルトの名無しさん
NGNG0274名無しさん♯
NGNGダウンロードはまだか〜。
http://beta.visualstudio.net/
0275名無しさん♯
NGNGhttp://communities.microsoft.com/newsgroups/previewFrame.asp?ICP=msdn&sLCID=us&sgroupURL=microsoft.public.dotnet.general&sMessageID=%253CuOixLA2WBHA.1408@tkmsftngp05%253E
でも、SDKはまだ?(・ε・)
0276名無しさん♯
NGNG.NET Pet Shop
http://www.gotdotnet.com/team/compare/petshop.aspx
0277Delフサギコ
NGNGミ,,゚Д゚彡 < そういえば、ソースをアプする場所はこちらがありあます。
,;゙ ミ \_____________
ミ. ミ
/゛゛゛゛
ソース置き場
http://www2.to/source
元はDelphi系から立ち上がってますが、
違う言語でも、OKというか「誰でも自由に利用」となっております。
お気に召しましたらご利用くださいな。
ってフサは管理者でもなんでもないのですが、ご紹介です。
ではではー。
0278デフォルトの名無しさん
NGNGなかなかやるね。
> The result?
> The exact same application functionality was
> implemented in just 1/3 the code using C#/ASP.NET,
> and it performs up to 28 times faster than previsouly
> published benchmarks of the J2EE application.
0279名無しさん♯
NGNGhttp://discuss.develop.com/archives/wa.exe?A2=ind0110d&L=dotnet&D=0&P=10502
0280デフォルトの名無しさん
NGNGhave not installed Beta 2, or users previewing the .NET Compact Framework
and Smart Device Extensions.
Users of Visual Studio .NET Beta 2 may install the Release Candidate;
however, the Release Candidate contains fewer features (this is the
Professional Edition whereas Beta 2 is the Enterprise Edition), and
a time bomb will prevent usage of the Release Candidate after
February 28, 2002.
Beta 2 users will probably choose to wait for the final release of
Visual Studio .NET, scheduled for late in the fourth quarter 2001.
0281名無しさん♯
NGNGhttp://msdn.microsoft.com/downloads/sample.asp?url=/msdn-files/027/001/516/msdncompositedoc.xml&frame=true
0282名無しさん♯
NGNG.Net Framework Code Going Gold
http://www.eweek.com/article/0,3658,s%253D1884%2526a%253D16995,00.asp
0283名無しさん♯
NGNGhttp://www.gotdotnet.com/team/netcf/default.aspx
0284デフォルトの名無しさん
NGNGこれでやってて、szStrが65535バイトを超えた時点で、
strlen=116なぞを返してきました。
つまりszStrはもともと16ビットのunsigend int(結構しらべても
出てないもの)だから上限は65535っていうことなの?
lstrlen使えば32ビットに拡張されるでしょうか?
実はせっかく書いたソースがいきなり116バイトになってしまったので
ひやひやもんだった。退避していてよかった・・・・
0285通りすがりのプログラマ
NGNGPDCでも配布されたようで。
http://www.zdnet.co.jp/news/0110/24/e_gates.html
0286デフォルトの名無しさん
NGNG0287デフォルトの名無しさん
NGNGお腹いっぱいになりそうだけど欲しいなCD。
0288デフォルトの名無しさん
NGNGrefキーワードのところサンプルコードのSwap関数間違ってるね。
static void Swap(ref int a, ref int b) {
int t = a;
a = b;
b = a;
}
b = a; は b = t; ですよね。なんとなく気になった。どうでもいいのでsage
0289デフォルトの名無しさん
NGNG0291デフォルトの名無しさん
NGNG0293デフォルトの名無しさん
NGNG以下のソースでコメントアウトしてるところにdelegeteを宣言すると
「名前空間"PrintAll'が見つかりません」と怒られます。
コメントアウトしてないところのdelegeteの宣言ではうまくいきます。
なぜでしょう?そう言う物なんでしょうか。根本的に何か理解不足の
ような気がしますが。よろしくお願いします。ソース突っ込みどころ
満載ですが、ご容赦ください。
0294ソース
NGNG{
using System;
delegate void PrintAll( object o );//うまくいきます
public class Test
{
//public delegate void PrintAll( object o );//うまくいきません。
public void PrintText( object text )
{
Console.WriteLine( (string)text );
}
public void PrintInt( object Integer )
{
Console.WriteLine( ((int)Integer).ToString() );
}
}
public class MainClass
{
static void Main()
{
Test test = new Test();
PrintAll delegateModule = new PrintAll(test.PrintText);
delegateModule( "string" );
delegateModule = new PrintAll(test.PrintInt);
delegateModule( 123456 );
}
}
}
}
0295名無しさん♯
NGNGdelegateの宣言は、IL的に見れば1種の型宣言よん。
つまり、Testクラスの中でdelegateを宣言すれば、
nested typeとして扱われるということ。
なので、PrintAllをTest.PrintAllと書けばOK。
Test.PrintAll delegateModule = new Test.PrintAll(test.PrintText);
0296デフォルトの名無しさん
NGNG>nested typeとして扱われるということ
ここら辺りまで理解できておりません。
インスタンスのtest.PrintAllとしてはまっておりました。勉強しないと。
0297デフォルトの名無しさん
NGNGイベント説明してるね。絶対意味わかんないよあれじゃ。
サンプルコードもあれだしな。
delegateつながりということで、、.
0298デフォルトの名無しさん
NGNGドキュメントを見ても見つからなかったもので。
0299デフォルトの名無しさん
NGNG川俣さんより名無しさん#大先生のほうが上だった。
0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNGあんな低い人と比べたらレベル測れない。
0302デフォルトの名無しさん
NGNGそれとイベントの呼び出し?に制約があるってことくらいしか。
あとEventArgs Classもわかない。EventArgs is the base class for event dataって
ヘルプに書いてるけど、event data ってなんでしょう?
0303デフォルトの名無しさん
NGNG0304名無しさん♯
NGNGUDDI SDKが必要よん。
http://msdn.microsoft.com/downloads/sample.asp?url=/MSDN-FILES/027/001/711/msdncompositedoc.xml
0305名無しさん♯
NGNGdelegate : 型の宣言,event : クラスメンバーの宣言ということで、根本的に違うよん。
eventと比べるべきは、delegateの「インスタンス」の方ね。
いちばんまぎらわしいのはこういうやつかな。
delegate void SomeDelegate();
class Test
{
public SomeDelegate Hoge;
}
class Test2
{
public event SomeDelegate Hoge;
}
両方共通でできることは、
・+= でメソッド追加
・-= でメソッド削除
・クラス内部から、= でメソッド代入
・クラス内部から、メソッド実行
一方、eventではできないことは、
・クラス外部から、= でメソッド代入
・クラス外部から、メソッド実行
あと、eventは(propertyと同じで)abstract,override,sealed,virtualで宣言できるよん。
つまり、見た目はフィールドっぽいけど、ふるまいはメソッドだということ。
なので、フィールド対プロパティみたいな感じでとらえるといいのかな。
0306名無しさん♯
NGNG> ヘルプに書いてるけど、event data ってなんでしょう?
MouseEventArgsとかKeyPressEventArgsのプロパティを見てみると
感じがつかめると思うよん。
0307名無しさん♯
NGNGhttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&res=6
0308デフォルトの名無しさん
NGNG0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNGライターとして名無しさん♯を採用してください。
0313302
NGNG違いについて理解できました。ありがとうございます。
>>306 もありがとうございます。感じがつかめました。^^
0314デフォルトの名無しさん
NGNGほんとWebでもいいから名無しさん♯ さんのC#の講義を読んでみたい。
お忙しいから無理なのかな。このスレで我慢しますか。
0315仕様書無しさん
NGNG0316名無し~3.EXE
NGNG0317デフォルトの名無しさん
NGNGinterfaceで似たようなことができると記憶してます
具体的なサンプルを探してみたのですが見つかりせません。
ヘルプでmultiple Inheritanceなどで引いて見たのですが、どうにも見つかりません。
C#でどのようにしたら多重継承みたいな?ことが実装できるのでしょう?
よろしくお願いします。そろそろ本買わないとなぁ〜 トホ
0318デフォルトの名無しさん
NGNGこういうやつか?
public class HogeHoge : Hoge, IFoo, IBar
0319デフォルトの名無しさん
NGNGありがとうございました。しかしinterfaceを継承したら継承したクラスで
実装しないといけませんよね。C++みたいにベースクラスのメンバを
そのまま多重継承できないのでしょうか。厨房な質問で申し訳ないです。
0320デフォルトの名無しさん
NGNG> そのまま多重継承できないのでしょうか。
それは無理。というか、それができたら「多重継承をサポートしない」とは言えなくなる。(w
0321名無しさん♯
NGNG> C#では多重継承をサポートしてないみたいなんですが
> interfaceで似たようなことができると記憶してます
COMでおなじみのContainmentのことかしらん。
とりあえずサンプル作ってみたよん。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&res=7
でも、これは再利用のテクというよりは、ただのトリックと考えた方がよさそうよ。
0322デフォルトの名無しさん
NGNG>>321 わかりやすいコードありがとうございます。
クラス図書いてみておおって感心しちゃいました。あとasも初めてみたので
勉強になりました。たしかに再利用で使うことは難しそうですね。
ありがとうございました。
0323デフォルトの名無しさん
NGNG0324デフォルトの名無しさん
NGNGおれもそれ知りたかった。
System.Management.*とかをよく見てたけど
よく分からなかったよ。
0325デフォルトの名無しさん
NGNGxsd.exeで出来るかも。System.Managementは関係なかった。ごめん。
0326名無しさん♯
NGNGxsd.exeでできるよん。
でも、xsd.exeの中身はILだから、コードでももちろん実現可能。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&res=8
0327デフォルトの名無しさん
NGNG#さん、お願いします。
どうもxsd.exeだとプロパティの定義しかされないのだけど、
これってそういうものなんでしょうか?
あと、XmlReflectionImporterというクラスがヘルプに
載ってないんですが、、、いろいろ面倒かけてすみません。
0328デフォルトの名無しさん
NGNGhttp://www.aspalliance.com/quickstart/aspplus/samples/classbrowser/cs/classbrowser.aspx
しかもこっちはなんかSDKについてたドキュメントとnamespaceの構成が違う。
どうなってるんだろう・・・
0329デフォルトの名無しさん
NGNGおれがメチャクチャDQSなことが判明しました!
上のヤツはなかったことにして下さい!!
0330名無しさん♯
NGNG> どうもxsd.exeだとプロパティの定義しかされないのだけど、
> これってそういうものなんでしょうか?
シリアライズに必要なメンバーのみだから、
基本的にpublicのプロパティだけになると思うよん。
> あと、XmlReflectionImporterというクラスがヘルプに
> 載ってないんですが、、、
あのサンプルはxsd.exeを逆アセンブルして作ってるから、
非公開のクラス使いまくりになってる。(藁
このへんのクラスは、ildasm.exeでSystem.Xml.dllを見るしかないかも。
>>328
それはSDKについてくるサンプルよん。
おそらく、β2より前の途中版でのクラス構成だと思われ。
0331デフォルトの名無しさん
NGNGありがとう#さん。なんとなく分かってきました!
■ このスレッドは過去ログ倉庫に格納されています