ふらっと C#,C♯,C#(初心者用) Part131 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2017/09/08(金) 18:12:11.06ID:Ej7G00WU
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

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

■前スレ
ふらっと C#,C♯,C#(初心者用) Part130
https://mevius.2ch.net/test/read.cgi/tech/1500327645/
■関連スレ
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1492843013/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
2017/09/17(日) 17:42:10.34ID:CHXibXnz
>>319
なぜ意味があると思った?
2017/09/17(日) 18:08:20.43ID:MRaZ3EJn
>>319
特定のコードじゃなく一般論の話をしてるなら、ちょっと短絡的過ぎない?w
IEnumerable<T>.Castなんかジェネリックだし、場合によっては使い道あるんじゃないの?

それと、前スレでもちょっと出てた話だけど、
個人的には必要もないのにインターフェイスかぶせても
生産性と可読性が下がるだけで何もメリットないと思うよむしろ
2017/09/17(日) 22:38:37.23ID:AtDn9PVi
Visual Studio 2017 Community
エディタ上の変数の色を変えるにはどうしたら良いのでしょうか?

http://qiita.com/hima_zinn/items/1a58309201ca8d616332
C++では↑のような方法でできるようなのですが
2017/09/17(日) 22:47:20.64ID:MRaZ3EJn
>>322
オプションの画面に検索機能がついてるんだからそれらしいワード入れれば見つかるでしょ
とりあえず「フィールド」でやってみたら?
2017/09/17(日) 23:17:30.87ID:AtDn9PVi
すみません見つからないんです
例えば『フィールド』で検索しても出てくるのはC#→コードスタイル→前半の中のものだけ
『フォント及び色』→にはC++用のいろいろな設定はあるんですが、C#の変数の表示を変えるようなものがどれかわからないんです
それっぽいな?というものを変更しても変わらず
変えられたのは行番号とコメントの色だけ

変えられないってことありますか?

ネット検索してもC++の例はあってもC#での例が見つからない
2017/09/18(月) 00:41:29.71ID:EYlFP7gd
>>324
VSはC#のために作られてるので()
c#の○○という表記じゃないだけ
下のほうにキーワードとか文字列とかいろいろあるでしょ
そのうちのどれかですとしか言いようがない
2017/09/18(月) 00:47:59.35ID:EYlFP7gd
あ、わかった
識別子だ
変数だけは無理だな
2017/09/18(月) 00:49:52.49ID:EYlFP7gd
眠い中探した俺を誉めろ
2017/09/18(月) 02:20:01.85ID:ozgak7o7
>>327
若年性老害候補、一直線!おめでとう
2017/09/18(月) 05:39:51.27ID:8KP9vlA9
>>327
眠い中どうもありがとうございます
雷鳴ってPC落としてたら…

やはり他の部分も変わってしまいますね
変数だけ色分けできたら使いやすいのに…
2017/09/18(月) 06:00:31.65ID:Yvok/w5K
クラスでListや配列を扱う勉強してます
以下はテキストボックスを使ってListをどう扱えば良いのかを考えている実験用ソースです

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

private void Form1_Load(object sender, EventArgs e)
{
string hyouji;
TextBox textbox01 = new TextBox();
this.Controls.Add(textbox01);
hyouji = Test01();
textbox01.Text = hyouji;
}

private string Test01()//テスト用オブジェ作成メソッド
{
List<string> testList = new List<string> { "a", "b" ,"あ","ん"};
Testclass jikken;
jikken = new Testclass();
jikken.youso = testList;
return jikken.test();
}
}
2017/09/18(月) 06:00:51.39ID:Yvok/w5K
public class Testclass//クラスと配列のテスト用
{
public List<string> youso = new List<string>();
string modori;
public string test()
{
modori = string.Join(",", youso);
modori = modori + "-" + modori;
return modori;
}

};

class Testclassの中のtestメソッドで文字列に変換したものを
stringの戻り値を多段経由してテキストボックスに表示しています
クラス跨いでのControlの扱いが分かってないのですが、
のソースで戻り値を経由せず、Testclassのtestメソッドからtextbox01.textに直接書き込むにはどうしたら良いでしょうか?
2017/09/18(月) 06:02:16.29ID:Yvok/w5K
色々余計なことや面倒くさい宣言、ダサいことしてたりしますが、試行錯誤の名残なのでご容赦ください
2017/09/18(月) 06:12:51.82ID:Yvok/w5K
https://ideone.com/aopoUw
すみません コード貼る…の使い方が分かってなかったです
コード貼っときました
2017/09/18(月) 08:33:57.39ID:7QJzTfH9
どっちかというと外に追い出すべきは
textBox.Textへの書き込みでは無くて
Test01メソッドの方
2017/09/18(月) 10:54:18.79ID:g7YoyWj5
WebBrowserのNavigating、Navigated、DocumentCompleteイベントがわかりません
ログ見てるとNavigatingが一度しか呼ばれていないのにNavigatedが2回呼ばれてDocumentCompleteが呼ばれる
自分の頭の中ではNavigating→Navigated→DocumentCompleteの順番だと思っているのですが違うのでしょうか?
参考になるページありましたらご教示お願いします
2017/09/18(月) 21:27:10.73ID:HjSStS87
初歩的かもですが、下記例の書き方で、Objectで引数を受け取るのにクラス変数の型に合わせてキャストして受け取る形が少し不自然に感じます。
この様な書き方で問題ないのでしょうか?
それとも他にいい感じの書き方がありますでしょうか?
class Test
{
private int a;
private string b;

public Test(params object[] param)
{
a = (int)param[0];
b = param[1].ToString;
}
}
2017/09/18(月) 21:31:12.97ID:IcOpWHLw
>>336
動けばいいだろカス
2017/09/18(月) 21:35:23.03ID:BIiVnPJO
>>336
object型で引数を受け取る必要あるの?

public Test( int a, string b )
{
 this.a = a;
 this.b = b;
}
2017/09/18(月) 21:35:57.16ID:JMdJN0yq
>>336
何を求めているのかいまいちわからないけど、その文だとparam[0]がキャストできないときにエラーで止まる
なので例えば
bool result = Int32.TryParse(param[0], out a);
に変える
この場合キャストできないときにresultにfalseが入る
2017/09/18(月) 21:38:06.59ID:HjSStS87
>>338
あくまで例って言う通り、実際はもっと多い引数だったり、場合によっては一部値を渡さない実装(デフォルト値設定)するつもりなんですよね
paramsって名前付き引数にできるのか?とか今調べてます
無理そうならDictionary使おうかとか考えてるところです
2017/09/18(月) 21:40:19.22ID:HjSStS87
>>339
ありがとうございます
TryParseの存在は知ってましたが、例外処理書いて載せるのめんどいのでとりあえずキャストだけ書いとけってやりました
すいません
2017/09/18(月) 21:43:00.12ID:xV3zBIyo
他人にエスパー能力を求めてる自覚がない人は困っちゃうねw
2017/09/18(月) 21:47:27.13ID:nAoTSCTK
>>340
型を作る
用途次第だけど
344デフォルトの名無しさん
垢版 |
2017/09/18(月) 21:48:03.01ID:HjSStS87
実際はこの画像の感じで色んな型の変数をセットしていくのに、コンストラクタにparamsで渡していって、受け取ってない場合は初期値入れるってのをやるつもりです。
https://imgur.com/a/f5Xg7
元々rubyで書いてあるプログラムなんですが、C#で移植しながら書こうとしています。
2017/09/18(月) 21:52:25.02ID:IcOpWHLw
>>344
なんでそんな賽の河原の石積みみたいなことしてんの?
2017/09/18(月) 21:52:57.70ID:k38CZIuV
paramsは可変長引数だからその例には適さないぞ
2017/09/18(月) 21:59:58.66ID:HjSStS87
>>346
rubyだと
def Initialize(params)
@stock_code = params[:stock_code]
@trade_type = params[:trade_type]
な感じで実装されてたので、C♯でも可変長変数と名前付きで渡せるかなーって考えてました・・・
それが無理なら変数をまとめて型にするか、Dictionaryかなって感じです
2017/09/18(月) 22:04:11.24ID:xV3zBIyo
なぜ素直にオーバーロードとかオプション引数&名前付き引数を使わないんだろう...
2017/09/18(月) 22:09:33.77ID:nAoTSCTK
>>344
コンストラクタでTryParseとかはアレなんでFactory使う

あと各データのできるタイミングやまとまりが違うものがフラットに混ざってるので
DBの正規化的なアプローチで少しデータ構造を考えといたほうがいいかもね
とりあえず移植したいだけなら型つくって移植して
後で困ってからリファクタリングしたのでもいいと思う
2017/09/18(月) 22:09:51.89ID:vOYXlSBd
dynamicと匿名型使えば?
2017/09/18(月) 22:10:50.50ID:BIiVnPJO
>>344
コンストラクタでは初期値だけ入れて、newする時にプロパティに代入するのが良いと思う。

var trade = new Trade()
{
 stock_code = X,
 trace_type = Y,
....
};
2017/09/18(月) 22:21:57.04ID:HjSStS87
>>348
確かにそっちのが簡潔ですね・・・
元々長いのと後々追加する時を想定して少しこの辺りいい方法無いかなって模索してたので
>>349
Factoryは知りませんでした、調べてみます
>>351
こういうやり方のがすっきりしてそうですね、見た目も分かりやすそうな感じがします
ただsetはこれだとpublicですが、private運用のがいいのかとか考えていました。
プロパティ使って代入ってよくある使い方なのでしょうか?
2017/09/18(月) 22:25:06.53ID:HjSStS87
>>350
これも使い方調べてみます
2017/09/18(月) 22:42:34.01ID:HjSStS87
>>352
一先ず、プロパティのset使って運用しようかと思います
後々何かいい形に出来そうなら変更していこうかと思います
回答下さった皆様、ありがとうございました
2017/09/18(月) 22:49:09.22ID:IKMu/QN7
パラメータークラス作ってそれに全部値入れて渡せば?
2017/09/18(月) 22:51:27.14ID:IKMu/QN7
object[]で渡すなんてバグの温床だよそんなもん
自分で呼び出すときと処理書くときに困るだけだ

初心者なら普通に関数書くほうがいい
2017/09/18(月) 23:04:27.54ID:vOYXlSBd
直接プロパティを設定するのはあまり良くないよ
いつ外から書き換えられるかわからず、それに対応できるように作るのは無駄に手間がかかるしテストもクソ面倒になる
結局、いつでもプロパティを書き換えられるように見えるくせに初期化時以外に書き換えたら壊れる糞みたいなクラスが出来上がる
2017/09/19(火) 00:12:55.89ID:UFvzWEfw
>>344
証券会社どこに対応?
2017/09/19(火) 01:11:24.64ID:OkajuEzq
>>358
そういうのとは違うみたいよ
https://books.google.co.jp/books?id=HOiNAwAAQBAJ&;pg=PT87#v=onepage
2017/09/19(火) 06:59:39.45ID:+o0BYr/j
>>359
なるほど
2017/09/19(火) 20:36:01.35ID:dvJOAkmr
メソッドの戻り値がListで、その中身を可変にした定義がしたいのですができますか?

インターフェースで List<Type> Select<Type>() と定義して
具象クラスで同じように定義、return List<string>(); とかやっても
"List<string>をList<Type>に暗黙的に変換できません。"とエラーになってしまいました。
362デフォルトの名無しさん
垢版 |
2017/09/19(火) 20:38:26.15ID:sbE0HbQy
linuxサーバーに好きな言語使ってwebアプリ作れって言われたら、言語何使う?
2017/09/19(火) 20:46:10.64ID:HSXd4/vW
>>361
何言ってるのか分からないけど、自分で(メソッドの戻り値の型を)可変にしたいといいつつ、
List<string>という非ジェネリックな型を返すのは何なの?

意味がわからないよ
2017/09/19(火) 21:37:01.96ID:oUqqEkrK
>>362
それをなぜここで聞く?
2017/09/19(火) 22:12:23.33ID:ekU6MC2y
>>361
まずTypeじゃなくてT使うように

メソッドのシグネチャーが
List<T> Select<T>()
なら実装は
return new List<T>();
2017/09/19(火) 23:49:48.63ID:WGzo2g/5
TabPageクラスを拡張してTabPageExクラスを作ったんですがTabControl.TabPages[index].Foo()を呼ぼうとしても呼べません
どうやったら呼べるようになりますか?TabPageCollectionを派生したクラスを作らないとダメですか?
2017/09/19(火) 23:53:29.45ID:3bAYaO8L
どうやっても呼べるようにはならないですよ
2017/09/20(水) 00:00:37.73ID:pKHwkxOR
>>366
拡張した内容が分からない
まず拡張したクラスでなく元のコントロールで呼び出していないか確認
その上で拡張した内容を張らないと誰もわからない
2017/09/20(水) 00:05:28.12ID:pKHwkxOR
あ、TabControl.TabPages[index].Foo()の時点で元のコントロールだな
それはだめだ
2017/09/20(水) 00:21:20.04ID:OL4nI+z3
失礼しました。拡張した内容ですが以下のとおりです
タブブラウザを作りたいのでこういう風にしました
TabPageクラスにGoBack、GoForwardメソッドを実装しそれをメインフォームのボタンから呼びたいのです
そのためにはtabControlでどのタブが選択されているか取得しないといけないので苦労しているところなのです


TabControl
https://ideone.com/5QXD2p
TabPage
https://ideone.com/d9v3vu
MainForm
https://ideone.com/bByZtw
2017/09/20(水) 03:50:11.03ID:OL4nI+z3
無理なんですね、わかりました
やりたいことは各TabPage上にWebBrowserがあるのですがその進む戻るボタンをToolStrip上に実装したいのです
どうにか実装する方法ってないでしょうか?
2017/09/20(水) 06:47:27.86ID:f7lGjoxP
グローバルフックの事を学びたく、
http://d.hatena.ne.jp/myugaru/20071130/1196434749
にあるソースを実行したいと思います

新規でコンソールアプリのプロジェクトを作り
Formを追加し
ソースをネームスペース以外コピペして、エラー無くデバッグで立ち上がるも、コンソールとFromは出るものの、なんの反応もありません
「Visual Studio ホスティングプロセスを有効にする」を外せとのことですがVS2017Communityではその項目が見当たりません
デバッグでなくビルドしたexeでも同様です

どう改変したら動くようになりますでしょうか?
よろしくお願いいたします
373デフォルトの名無しさん
垢版 |
2017/09/20(水) 09:28:35.33ID:QOv/22JC
>>370
まあ単純には、
var tabex = TabControl1.TabPages[x] as TabPageEx;
if (tabex != null) {
...
}
でもいいんじゃね
2017/09/20(水) 10:09:23.61ID:QOv/22JC
>>374
普通に動いたわ
新規プロジェクト作成でWindows Formsアプリケーションを選択
Form1.csを削除
Program.csを開いて既存のコードは削除してからリンク先のコードをペースト
F5
VSをアクティブにして出力ウィンドウにフォーカス移動して適当にキー入力するとmessage=KEYDOWNとか出力される

VS2017はホスティングプロセスがなくなったっぽい
ちなみにホスティングプロセスで動いてるかどうかは
デバッグ実行中にタスクマネージャ開いて
hoge.exeの代わりにhoge.vshost.exeが動いてるかどうかで判断できる
2017/09/20(水) 18:54:31.86ID:EHoWpSXt
>>374
ありがとうございます
できました
2017/09/20(水) 21:35:02.01ID:PQ6KY/LI
test
2017/09/20(水) 21:35:49.94ID:PQ6KY/LI
https://github.com/chomado/Xamalist/commit/1422a3eb2a80bba53b43afa3ea8afdb5d689cf55
このコードについて質問です

StringExtentions っていうのをなぜ改めて作っているのかわからないんですが
クラスの中にString型のオブジェクトがあれば、IsNullOrEmptyを呼び出せないの?
2017/09/20(水) 22:16:03.45ID:DOSxYj0U
>>377
static methodだからインスタンスメソッドとしては呼び出せない
String.IsNullOrEmpty(foo) と foo.IsNullOrEmpty の違い
379デフォルトの名無しさん
垢版 |
2017/09/20(水) 22:42:10.58ID:eNb8jX7J
今となってはFormアプリケーションの作り方を覚えても無駄でしょうか?
現場でGUIアプリケーションはどのように作りますか?
2017/09/20(水) 22:54:26.15ID:JtkVUIC7
その現場による
2017/09/20(水) 22:55:28.94ID:eNb8jX7J
防衛省案件とかはどうでしょうか?
2017/09/20(水) 22:56:02.60ID:eNb8jX7J
Qt?
2017/09/20(水) 23:13:28.76ID:FueCi3Km
>>379
未だにそれよ
無駄にはならないよ
なんだかんだいって仕組みは一緒だから
2017/09/21(木) 08:27:22.37ID:3ejzg6/y
>>373
できました。ありがとうございます。

>>370を作る過程でマウスの中クリックでWebBrowserのタブ追加を行う際にTabControlクラスのメソッドを呼ばないと行けないんですが、この場合どうするのがいいのでしょうか?
・TabControlクラスのメソッドをTabPageクラスのコンストラクタに渡し、さらにWebBrowserのコンストラクタに渡す
・TabControlクラス内でパブリックな静的インスタンスを保持するプロパティを作成し、その静的インスタンスを介しWebBrowserクラスからメソッドを呼び出す
2017/09/21(木) 08:29:37.61ID:3ejzg6/y
>>384
途中送信してしまいました
設計上はどちらが優れているのか教えてほしいです
また他にいい案ありましたらお願いします
2017/09/21(木) 10:32:53.97ID:qZmCICJB
Parent.Parent
2017/09/21(木) 18:06:25.21ID:JtwQpz4i
>>383
それ聞いて安心したよ。ありがとう。
まずはFormアプリケーションを勉強することにした。
2017/09/22(金) 07:06:24.08ID:2m2DZ4nM
質問です
宜しくお願いしいます

アプリ設定の保存の最も初歩的な所から勉強しようと思っているのですが
http://qiita.com/taigaaa2/items/7f05ad950a57033892ae
↑が一番単純な構造で分かりやすいと思い、記述通りに設定し、ソースも必要部分をコピペで入力
エラーもでずにアプリも走りますが、設定を読み込んでいない(Projects\Hoge\Hoge\bin\Debug内のHoge.exe.configを弄っても何も反映されない)
保存もされていない(user.configがどこにも作成されていない)という状況です

どこか他に設定箇所があるのでしょうか?
よろしくお願いします
2017/09/22(金) 08:12:54.86ID:+YP/tqCe
>>388
ありがちなのは
Properties.Settings.Default.Save();
が抜けている
2017/09/22(金) 08:34:32.57ID:VB7mr2jw
ありがとうございます

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Properties.Settings.Default.HozonString = this.txtHogeString.Text;
Properties.Settings.Default.HozonInt = int.Parse(this.txtHogeInt.Text);
Properties.Settings.Default.Save();
}
この部分の最終行ですよね?
書いてあります
2017/09/22(金) 08:50:55.65ID:VB7mr2jw
HozonStringに値を入れても反映されません…
なんかこのシステム自体が動いてないような…
2017/09/22(金) 08:52:07.52ID:KxUIJ/0F
>>388
そのページはデザイナの設定が書いてないがLoadとFormClosingのイベントの設定はしてある?
2017/09/22(金) 09:06:14.05ID:VB7mr2jw
>>392
ありがとうございます
それでした!
Formのプロパティーとかもデザイナー使わないで設定する方法ばかりやってたんで、
デザイナーの方でハンドラの設定してないのすっかり忘れてました

LoadもFormダブルクリックするのすっかり忘れて…お恥ずかしい

ありがとうございました
凄く助かりました
2017/09/22(金) 09:10:59.92ID:KxUIJ/0F
>>393
初心者向きのようで初心者が書いて大事な部分が抜けているページだな
面倒でも他の所参考にした方がいい
https://dobon.net/vb/dotnet/programing/mysettings.html
とか
2017/09/22(金) 09:13:00.30ID:XETG01Ra
データベース接続文字列ってあんな長いの手動で書くものなんでしょうか?
自動出力とかないのですか?
2017/09/22(金) 09:19:19.37ID:L886aacT
長いか?
長い奴でも2〜3行程度しか書いたことないけど
2017/09/22(金) 10:29:26.18ID:/H9tPbO8
データベースへの接続のウィザードとか使えば接続文字列勝手に作ってくれるだろ
2017/09/22(金) 10:33:15.19ID:eYJEmi08
>>395
DbConnectionStringBuilderからの派生クラス使うとか
Dictionary形式だから項目多いなら管理楽になるけど
2017/09/22(金) 10:37:52.34ID:usj2bMF0
接続文字列は全世代の遺物なんだけど
誰も改善しようとしない

ローカルルールだからけの文字列をわざわざ考えて
それをまたどこかでわざわざパースしてるんだから馬鹿らしい

connectionStringBuilderとかあるけどあれは文字列作って
それをまたパースしてるんだから同じく馬鹿らしい
2017/09/24(日) 07:01:15.21ID:fnb/dDo2
>>386
ありがとうございます
取り掛かっているのですがマウスのホイールクリックで新たなタブとして開きたいのですが
WebBrowser.Document.Clickイベントで躓いています
WebBrowser_DocumentCompletedイベントに「Document.Click += Document_Click」をの一文を追加し
Document_ClickイベントのマウスのHtmlElementEventArgs.MouseButtonPressedでホイールクリックを検知しようとしたところ
左クリックでも中クリックでも右クリックでもNoneと表示されています
WebBrowserのDocument上で中クリックを検出するにはどうすればいいでしょうか?
2017/09/24(日) 07:46:57.15ID:0E5Ac8qe
すみません
変な質問かもしれませんが、宜しくお願いします

Label hogehoge = new Label
とhogehogeというインスタンスのLabelを作ったとします
プロパティーで名前は指定していません
他のプロパティーも空という前提でお願いします

このLabelのダブルクリックでイベントハンドラーを作り
イベントの中に
Console.WriteLine(((Label)sender).Name);
としても当然名前は出てきません
この時、hogehogeというLabelを識別する文字列を取得したいのですが(この場合hogehogeが一番良い)、インスタンス名を取得 と検索しても出てこずです
名前の付いてないControlを識別する文字列を取得するにはどうしたら良いでしょうか?
Console.WriteLine(((Label)sender).〜のところに使えるいろんなコードをスニペットで調べてもそれっぽいものが無いのですが
そもそも名前を付けとけというのは別として、なんらかの方法で識別する文字列を取得できますか?

よろしくお願いします
2017/09/24(日) 07:59:04.31ID:8QRYtBFv
nameofじゃね
2017/09/24(日) 08:19:31.40ID:Iu73uVEK
ないよ
欲しいなら自分で付けとけとしか言いようがないね
というかそもそも識別するのに名前である必要がある? ってところから検討しないと
2017/09/24(日) 08:20:29.03ID:8QRYtBFv
デバッグ用に出したいときあるじゃん
2017/09/24(日) 09:00:09.85ID:N5BpuRhH
>>401
名前以外で固有ってハンドルくらいじゃね?
自動生成とかで名前を付ける手間を省きたいとかなら>>403の通り名前である必要が無いし
2017/09/24(日) 09:27:14.32ID:0E5Ac8qe
>>404
自分もデバッグ用にと思ったんです

>>403>>405
どうもありがとうございます
やはりなさそうですね

色々実験している時に、一度何かの間違いで、forのLoopの中で、インスタンス名?も名前も変えないControlを複数作って配置したことが有って、
何故かそのまま動いて、それぞれ個別に識別してるようなので、何が別の識別要素でもあるのかな?と思ってお伺いしました
ありがとうございました

>>402
nameofは新しいものらしく、情報が少なくて私には使い方がよくわからず
ちょこっと説明みたところ「メンバ hogeの名前は"hoge"」…みたいな使い方?
入り口の入り口にいる自分には何が何やら
nameof(sender)をやってみたら"sender"出ましたw
nameof((Label)sender)は受け付けてもらえませんでした
2017/09/24(日) 11:36:28.18ID:T/MiKQPL
変数名を取得したいんじゃなくて
インスタンス作成時にコントロールのNameプロパティに変数名を自動でセットしたいの?

そんな機能は存在しないから自分でシコシコ手書きでやっとけ
2017/09/24(日) 11:55:06.77ID:1OC4vxE7
リフレクションでもないんかな?
msのコントロールにもインスタンス突っ込むとメンバ名が出てくるのあるけどね
変数名は無いのか
2017/09/24(日) 11:55:11.39ID:E+MF96aa
リフレクションでもないんかな?
msのコントロールにもインスタンス突っ込むとメンバ名が出てくるのあるけどね
変数名は無いのか
2017/09/24(日) 12:00:44.73ID:NHAiERWm
ローカル変数名なんてILに残らないし流石にリフレクションは無理なのでは
2017/09/24(日) 12:27:00.23ID:N5BpuRhH
Name属性がなくてもsender==label1とかの識別ならできるけど中でハンドル比較しているんじゃないかな
だからどうしても出したかったらフィールドの一覧から一致するハンドルを探せばできなくはない
2017/09/24(日) 12:40:22.57ID:g05veIjA
>>406
Formに配置したコントロールは、Controlsプロパティで取得出来る。
Controls.Where( x => x is Label )とかやればLabelコントロールに絞り込めるけど、それ以上は判別しようがないな。
2017/09/24(日) 12:41:57.70ID:6oSExpao
設計が間違ってる
2017/09/24(日) 13:12:02.52ID:U4nAGnPY
設計なんて大げさなものじゃなく、考え方が間違ってるねw
なんか盛大に勘違いしてるというか

なぜNameをIDにしたいなら素直にNameを設定しないのか意味が分からない
何がしたいの
2017/09/24(日) 15:12:59.43ID:KcVpSqdX
変数名とNameで2回hogeと書くのが冗長だってんでしょ
是非についてはどうでもよすぎるのでコメントしない
鼻くそでもほじってる方がマシ
2017/09/24(日) 16:08:08.69ID:F2yzHt0b
変数名は前まではプログラムする人のためにあって
実行環境まで残ってないものだった

最近は変数名が残るようになったので使おうとする人が多いけど
もともとそういう種類のものじゃないんだよ
2017/09/24(日) 22:08:09.82ID:fnb/dDo2
>>400もどなたかお願いします
2017/09/25(月) 01:09:43.42ID:T67/GWI3
自己解決しました。
Document.ClickイベントではなくDocument.Linksのほうに一つずつMouseDownイベントを追加することでできました
これは解決済みなのですが、すっきりしないので確認させてください
Document.LinksのMouseDownイベント内でDocument.GetElementFromPointメソッドに渡す引数ですが、
MousePositionやOffsetMousePositionを渡すようにしているページがかなりあったのですが、どっちも使えずでClientMousePositionを渡すようにしたのですが
.NETのバージョンがあがるにつれ、変わったのでしょうか?
2017/09/25(月) 02:40:11.77ID:60Ft387g
パネルに画像などを追加していった際、描画範囲より外に出てしまった場合に
AutoScrollをtureにするとスクロールバーが表示されますよね?
縦方向のスクロールバーが本来は右側に出ると思うのですが、左側に出てしまいます。
すごく違和感があるので右側にしたいのですが、調べてみても特に設定する方法がみつからないのですが、
なぜなんでしょうか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況