C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

簡単な?方法あったら教えてください


(過去ログ 3 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■3174 / inTopicNo.1)  簡単な?方法あったら教えてください
  
□投稿者/ KEN 二等兵(17回)-(2006/04/20(Thu) 09:52:21)

分類:[VB.NET] 


分類:[VB.NET] 

ラジオボタン関係なんですけど
○有○無 ○有○無 ○有○無  横には3項目あります



ってあってtrueなら変数に0をいれるそうでない場合1をいれるって作ってるんですが
VB6の動きでやっちゃってて・・
If rboYuukou21.Checked = True Then
rboMkanr1 = "0"
Else
rboMkanr1 = "1"
End If
If rboNew11.Checked = True Then
rboMkanr2 = "0"
Else
rboMkanr2 = "1"
End If
If rboYuukou31.Checked = True Then
rboMkanr3 = "0"
Else
rboMkanr3 = "1"
End If
rboMkanr = rboMkanr1 & rboMkanr2 & rboMkanr3

っていう感じで一個ずつやってるんですが
.net的な?やり方ってあるんでしょうか
あと便利なやりかたとか・・
あったらお願いします


0
引用返信 編集キー/
■3176 / inTopicNo.2)  Re[1]: 簡単な?方法あったら教えてください
□投稿者/ 名無しぃシャープ 曹長(88回)-(2006/04/20(Thu) 11:57:53)

分類:[VB.NET] 

No3174に返信(KENさんの記事)
> っていう感じで一個ずつやってるんですが

今の方法が最もコンパイラから見て単純で最短な手法です。

> .net的な?やり方ってあるんでしょうか

.NET的というかVB6だろうとなんだろうと構造化言語的な方法ならあります。

> あと便利なやりかたとか・・
> あったらお願いします

今の方法が最もコンパイラから見て単純で最短な手法ですが、
おそらく冗長になるのがイヤなだけだと読み取りました。

Prvate Function BoolToString(ByVal b As Boolean) As Integer
If b Then
Return "0"
Else
Return "1"
End If
End Function

rboMkanr1 = BoolToString(rboYuukou11.Checked)
rboMkanr2 = BoolToString(rboYuukou21.Checked)
rboMkanr3 = BoolToString(rboYuukou31.Checked)
rboMkanr = rboMkanr1 & rboMkanr2 & rboMkanr3


0
引用返信 編集キー/
■3177 / inTopicNo.3)  Re[2]: 簡単な?方法あったら教えてください
□投稿者/ trapemiya 伍長(52回)-(2006/04/20(Thu) 13:12:37)
trapemiya さんの Web サイト

分類:[VB.NET] 

あとは、ラジオボタンを継承して、0か1を返すプロパティを実装してしまう方法もあると思います。

0
引用返信 編集キー/
■3179 / inTopicNo.4)  Re[3]: 簡単な?方法あったら教えてください
□投稿者/ Soony 二等兵(15回)-(2006/04/20(Thu) 13:40:05)

分類:[VB.NET] 

2006/04/20(Thu) 14:01:03 編集(投稿者)

C#や、Office VBAには三項演算というものがあるのですが、VB.NETにはないのでしょうか。

例:C#
rboMkanr1 = (rboYuukou11.Checked ? 1 : 0);
rboMkanr2 = (rboYuukou21.Checked ? 1 : 0);
rboMkanr3 = (rboYuukou31.Checked ? 1 : 0);
rboMkanr = rboMkanr1 & rboMkanr2 & rboMkanr3;

例:Office VBA
rboMkanr1 = IIF(rboYuukou11.Checked, 1, 0)
rboMkanr2 = IIF(rboYuukou21.Checked, 1, 0)
rboMkanr3 = IIF(rboYuukou31.Checked, 1, 0)
rboMkanr = rboMkanr1 & rboMkanr2 & rboMkanr3

また、昔のVB(6.0以前)では、内部的には True=-1, False=0 として
扱われることを利用して、こんな書き方もあったように思います。
(.NETからは変数の扱いが変わったから、これはアウトかな・・・汗)

例:VB6.0
rboMkanr1 = rboYuukou11.Checked * -1
rboMkanr2 = rboYuukou21.Checked * -1
rboMkanr3 = rboYuukou31.Checked * -1
rboMkanr = rboMkanr1 & rboMkanr2 & rboMkanr3

参考までに。

0
引用返信 編集キー/
■3180 / inTopicNo.5)  Re[4]: 簡単な?方法あったら教えてください
□投稿者/ ぽぴ王子 二等兵(2回)-(2006/04/20(Thu) 14:09:20)

分類:[VB.NET] 

VB.NETにもIIf関数はあることにはあるようです。ただMicrosoft.V
isualBasic名前空間なのであまりお勧めはできないかな、というと
ころでしょうか。
(MSDNでぱっと見ただけなので、他に方法ありそうですが)

> rboMkanr1 = rboYuukou11.Checked * -1
> rboMkanr2 = rboYuukou21.Checked * -1
> rboMkanr3 = rboYuukou31.Checked * -1
> rboMkanr = rboMkanr1 & rboMkanr2 & rboMkanr3

この書き方だと、いつもじゃんぬねっとさんが口(指?)をすっぱ
くして言っておられる「Option StrictをOnにしてください」を適
用した途端にエラーで撥ねられてしまいそうです。


0
引用返信 編集キー/
■3181 / inTopicNo.6)  Re[5]: 簡単な?方法あったら教えてください
□投稿者/ 中博俊 神(373回)-(2006/04/20(Thu) 15:16:53)
中博俊 さんの Web サイト

分類:[VB.NET] 

継承・・・・なの?
カスタムコントロールで2つを保持するようなやつを作るってことでしょうかね。



0
引用返信 編集キー/
■3182 / inTopicNo.7)  Re[6]: 簡単な?方法あったら教えてください
□投稿者/ trapemiya 伍長(53回)-(2006/04/20(Thu) 15:41:14)
trapemiya さんの Web サイト

分類:[VB.NET] 

2006/04/20(Thu) 15:48:30 編集(投稿者)

No3181に返信(中博俊さんの記事)
> 継承・・・・なの?
> カスタムコントロールで2つを保持するようなやつを作るってことでしょうかね。

カスタムコントロールを作るところまでいけばいいんでしょうが、とりあえずは以下み
たいな感じで。C#でごめんなさい。

public class myRadioButton : System.Windows.Forms.RadioButton
{
public int CheckedNum
{
get
{
return this.Checked ? 1 : 0;
}
}
}


0
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -