Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


8 questions online user: 3

0
votes
answers
38 views
+10

與無線電輸入結合使用`ngModel`顯示或隱藏部

0

我建立一個用戶接口,其中用戶可以創建兩種類型的內容即LINKMESSAGE與無線電輸入結合使用`ngModel`顯示或隱藏部

我會使用內置解決方案,例如Ionic中的Segment組件,但由於設計要求,這是不可能的。

我做的是什麼,我有兩個無線電輸入

<input [(ngModel)]="notificationCreateType" type="radio" id="notification_type_link" name="notificationType" value="0" class="custom-radio" /> 

<input [(ngModel)]="notificationCreateType" checked type="radio" id="notification_type_message" name="notificationType" value="1" class="custom-radio" /> 

值0的鏈路和1是消息。

  <div *ngIf="notificationCreateType == '0'"> 
       ... stuffs here 
      </div> 


      <div *ngIf="notificationCreateType == '1'"> 
       ... stuffs here 
      </div> 

似乎選擇任意的無線選項時,工作正常,但是當已經被選中的頁面加載和無線選項最初不工作。

[(ngModel)]="notificationCreateType"絕對使用無線電輸入的值,並設置notificationCreateType它,雖然它不會做同樣的當輸入已經被設置checked屬性

什麼我會檢查喜歡做的是要麼ngModel尊重輸入的checked屬性,或者甚至更好的是我可以在組件的ts文件中設置notificationCreateType的初始值,該文件用於在模板中自動檢查無線電輸入。

這是甚至可能的,因爲我經歷了許多文檔,包括官方的Ionic和Angular文檔,仍然沒有發現關於無線電輸入的詳細信息。

沙发
0
1

從模板中刪除checked屬性。這是無用的,因爲Angular將用起始值notificationCreateType覆蓋選中的值。所以,你會只是有

<input [(ngModel)]="notificationCreateType" type="radio" 
     name="notificationType" value="0"/> 

<input [(ngModel)]="notificationCreateType" type="radio" 
     name="notificationType" value="1"/> 

然後在組件類,只需設置初始值:

public notificationCreateType = '1'; 

角將檢查默認的單選按鈕,你的照顧。

+0

哇!這工作非常漂亮。 我排除'公共'關鍵字,仍然工作,我希望這不會在未來造成任何問題。 謝謝! –

+1

除非指定'private',否則假定'public',所以我認爲它不會引起問題。 – BeetleJuice

0
votes
answers
27 views
+10

爲什麼只顯示3個點而不顯示全文?

-1

當我運行下面的代碼時,會出現單選按鈕,但不是按鈕旁邊顯示的文本,只有3個三個小點'...'。請問爲什麼?爲什麼只顯示3個點而不顯示全文?

RadioButton rd= new RadioButton("Hello"); 
    rd.setPrefSize(500, 500) 
    HBox hB = new HBox(); 
    myDialog.getDialogPane().getChildren().add(hB); 
    hB.getChildren().add(rd); 
    hB.setPrefSize(500, 500); 
    hB.setLayoutX(100); 
    hB.setLayoutY(200); 
沙发
0
-1

你需要有一個更大的框架。也許你應該嘗試更小的尺寸。

Java無法顯示您想放置的文本。 這個問題適用於每個人。

0
votes
answers
40 views
+10

通過提交得分

0

我正在製作一個網站頁面,這是一個調查的種類。我有一節主要工作,但我不能得到下半場。我使用了與第一部分相同的代碼並進行了擴展。儘管如此,我還是無法使用它。我不明白爲什麼當我點擊提交時不會寫分數。當我按下提交時,它應該寫下「這是答案」,並且應該從問題的值中計算點的數量,例如,如果他們按下每個問題的第一個單選按鈕,它應該打印出2. 2.通過提交得分

這是我使用的基本JavaScript,以防它有所幫助。

function answer(total) { 
var score = 0; 
if (document.getElementById('exp_no').checked) { 
score++; 
} 
if (document.getElementById('chg_no').checked) { 
score++; 
} 
if (document.getElementById('sus_no').checked) { 
score++; 
} 
document.getElementById('totalScore').innerHTML = score; 

} 

這是我正在使用的JavaScript。

function answer2(total) { 
var score2 = 0; 
if (document.getElementById('arr_1').checked) { 
score2++; 
} 
else if (document.getElementById('arr_2').checked) { 
score2 + 2; 
} 
else if (document.getElementById('arr_3').checked) { 
score2 + 3; 
} 
else if (document.getElementById('arr_4').checked) { 
score2 + 4; 
} 
else (document.getElementById('arr_5').checked) { 
score2 + 5; 
} 

if (document.getElementById('been1').checked) { 
score2++; 
} 
else if (document.getElementById('been2').checked) { 
score2 + 2; 
} 
else if (document.getElementById('been3').checked) { 
score2 + 3; 
} 
else if (document.getElementById('been4').checked) { 
score2 + 4; 
} 
else if (document.getElementById('been5').checked) { 
score2 + 5; 
} 
if (score2 == 2) { 
document.getElementById('finalScore').innerHTML = score2; 
} else if (score2 == 4){ 
document.getElementById('finalScore').innerHTML = score2; 
} else if (score2 == 4){ 
document.getElementById('finalScore').innerHTML = score2; 
} else if (score2 == 6){ 
document.getElementById('finalScore').innerHTML = score2; 
} else if (score2 == 8){ 
document.getElementById('finalScore').innerHTML = score2; 
} else if (score2 == 10){ 
document.getElementById('finalScore').innerHTML = score2; 
} 
} 

這是我的HTML

<button onclick = "toggletab()" id="tabButton"><h3>first results</h3> 
</button> 
     <form> 
     <div id="first" > 
     <fieldset> 
       <label> 
       <legend>Is your arrest record a:</legend> 
        <input id="arr_1" type="radio" name="field4" value="1" 
onclick="getscores4(this)"/> 
        IC 35-38-9-1 
       </label> 
       <label> 
        <input id="arr_2" type="radio" name="field4" value="2" 
onclick="getscores4(this)"/> 
        IC 35-38-9-2 
       </label> 
       <label> 
        <input id="arr_3" type="radio" name="field4" value="3" 
onclick="getscores4(this)"/> 
        IC 35-38-9-3 
       </label> 
       <label> 
        <input id="arr_4" type="radio" name="field4" value="4" 
onclick="getscores4(this)"/> 
        IC 35-38-9-4 
       </label> 
       <label> 
        <input id="arr_5" type="radio" name="field4" value="5" 
onclick="getscores4(this)"/> 
        IC 35-38-9-5 
       </label> 
      </fieldset> 


      <fieldset> 
      <label> 
       <legend>Has it been:</legend> 
        <input id="been1" type="radio" name="field5" value="1" 
onclick="getscores5(this)"/> 
       1 Year From Date of Arrestor earlier if the Prosecutor 
agrees 
       </label> 
       <label> 
        <input id="been2" type="radio" name="field5" value="2" 
onclick="getscores5(this)"/> 
        5 Years From Date of Arrestor earlier if the Prosecutor 
agrees 
       </label> 
       <label> 
        <input id="been3" type="radio" name="field5" value="3" 
onclick="getscores5(this)"/> 
        8 YearsFrom Date of Arrestor earlier if the Prosecutor 
agrees 
       </label> 
       <label> 
        <input id="been4" type="radio" name="field5" value="4" 
onclick="getscores5(this)"/> 
        8/3 Years The Later of 8 Years from Date of Conviction 
or 3 years from completion of the sentence or earlier if the Prosecutor 
agrees 
       </label> 
       <label> 
        <input id="been5" type="radio" name="field5" value="5" 
onclick="getscores5(this)"/> 
        10/5 Years The Later of 10 Years from Date of 
Conviction or 5 years from completion of the sentence or earlier if the 
Prosecutor agrees 
       </label> 
      </fieldset> 
     </div> 
     <fieldset id="submitbutton" class="article"> 
<input type="button" id="submit" value="submit" onclick='answer2()' /> 
<p id="finalScore">this is answer </p> 
</fieldset> 
     </form> 
     </div> 
     </div> 

     <script src="backtest.js"></script> 
     <script src="backtest2.js"></script> 
     <script src="toggle.js"></script> 
+0

這段代碼有很多問題。你究竟想幹什麼? – brk

+0

我需要添加問題的值。我打算有5個不同的結果,取決於最終值是否等於2,4,6,8或10.這應該顯示結果#取決於最終值等於多少個數。因此,如果選擇了arr_1和been1,最終值應爲2並顯示結果1。 –

沙发
0
0

在功能ANSWER2(總數)已宣佈名爲「score2」變量,但在所有你的邏輯,你正在使用名爲「分數」變量。將分數更改爲分數2,然後它將起作用。而且我也認爲answer2()函數中不需要「全部」參數,因爲您沒有在任何地方使用它。

0
votes
answers
27 views
+10

如何在單選按鈕中設置默認選擇 - 活動形式yii

0

這裏我需要在單選按鈕(選中)中添加默認選擇。如何在單選按鈕中設置默認選擇 - 活動形式yii

<?php $form = ActiveForm::begin(['id' => 'login-form']); ?>  
<?= $form->field($model, 'email') ?> 
<?php if(!empty($usernames)){ 
    echo '<label>Select Any Username To Which You Want To Login</label><div class="all_username">'; 
    foreach ($usernames as $key => $value) { ?> 
     <?= $form->field($model, 'username[]')->radio(['value' => $value['username'], 'id' => ''])->label($value['username']) ?> 
    <?php } ?> 
    </div> 
    <?= $form->field($model, 'password')->passwordInput() ?> 
<?php } ?> 
+0

你爲什麼不使用radioList? – madalinivascu

沙发
0
1

您需要使用以下方法,其中1是您選擇的ID。只有通過指定$model->username的默認值,你可以選擇電臺將被選中

foreach ($usernames as $key => $value) { 
    if(/*somecondition*/){ 
     $model->username = $value['username']; 
    }?> 
    <?= $form->field($model, 'username[]')->radio(['value' => $value['username'], 'id' => ''])->label($value['username']) ?> 
<?php } ?> 

 
$form->radioButtonList($model,'1', $usernames, array('separator'=>""));
+0

在現有代碼中沒有其他選項可供選擇默認值? – user3686600

+0

你能告訴我你正在使用哪個Yii版本嗎? – dipmala

板凳
0
1

你或許可以用這樣的事情。

+0

我已在我的代碼中添加,但添加後沒有默認選擇 – user3686600

+0

您使用的是什麼條件? – mega6382

+0

我的意思是,你究竟是如何實現這個的? – mega6382

0
votes
answers
40 views
+10

如何從另一個項目更新recyclerview項目中的數據?

0

我有RecyclerView一個問題,我有RecyclerView其在每一行項radio button和其他一些意見,如何從另一個項目更新recyclerview項目中的數據?

我想究竟是什麼,當RadioButton由用戶籤我想取消其他RadioButton(如果任何東西都會被檢查)。由於它是Recyclerview我不能使用radiogroup。

在適配器onBindViewHolder我寫這篇文章偵聽每個單選按鈕

holder.radioButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      selectedPosition = holder.getAdapterPosition(); 
      Toast.makeText(activity, "section: " + selectedPosition, Toast.LENGTH_SHORT).show(); 
     } 
    }); 

我怎樣才能使一個單選按鈕,選擇取消選中?
換句話說,我如何更新另一個項目視圖偵聽器recyclerview特定項目中的視圖屬性?

+1

看到這樣一個..https://stackoverflow.com/questions/46344032/how-to-select-just-one -radiobutton-with-recyclerview-android/46344598#46344598 –

+0

@Sanjay Majoka哦,你這是我想要的,我試試看,它工作得很好,非常感謝你的幫助:) – Mosa

沙发
0
2

您必須對將selectedItem參考在全球範圍內的適配器,然後更新所有項目時,用戶檢查一個新的單選按鈕。

public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> { 
    private int selectedItemPosition = -1; 
} 

,做在你的適配器的onBindViewHolder()方法的東西,

@Override 
public void onBindViewHolder(final Adapter.ViewHolder holder, int position) { 
    holder.radioButton.setChecked(holder.getAdapterPosition()==selectedItemPosition); 
    holder.radioButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      selectedItemPosition = holder.getAdapterPosition(); 
      notifyDataSetChanged(); 
     } 
    }); 
} 
+0

確定greate,它工作正常,但是當我更新所有項目和r ecyclerview有大量的數據會滯後幾秒鐘? – Mosa

+0

recyclerview一次不會更新列表中的所有項目。正如名稱所示,Recyclerview不會呈現甚至在您的列表中繪製儘可能多的項目,它只會重用視圖。每個項目在進入顯示屏時都會更新。所以不必擔心時滯。 – kcg

+0

啊我明白了,謝謝你的解釋和清楚的事情 – Mosa

板凳
0
1

試試這個::

 if (position == selectedPosition) { 
      holder.radioButton.setChecked(true); 
      Toast.makeText(activity, "section: " + selectedPosition, Toast.LENGTH_SHORT).show(); 
     } else { 
      holder.radioButton.setChecked(false); 
     } 

     holder.radioButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       selectedPosition = holder.getAdapterPosition(); 
       notifyDataSetChanged(); 
      } 
     }); 
+0

我在鏈接中找到了我的請求@Sanjay Majoka給了我,但謝謝你,這是另一個很好的答案,它適用於我 – Mosa

0
votes
answers
34 views
+10

如何檢查選擇了哪個radiogroup按鈕?

1

我在一個radiogroup中有三個單選按鈕。我如何告訴Java根據所選按鈕做不同的事情?我有組和所有的按鈕聲明:如何檢查選擇了哪個radiogroup按鈕?

final RadioGroup size = (RadioGroup)findViewById(R.id.RGSize); 
     final RadioButton small = (RadioButton)findViewById(R.id.RBS); 
     final RadioButton medium = (RadioButton)findViewById(R.id.RBM); 
     final RadioButton large = (RadioButton)findViewById(R.id.RBL); 

我知道我會說這樣的事情:

if (size.getCheckedRadioButtonId().equals(small){ 

} else{ 

} 

但等於不正確的語法...我怎麼能要求它的Java按鈕被選中?

+0

請看看http://www.thetekblog.com/2010/07/android-radiobutton-in-radiogroup -例/ – 2012-04-04 00:47:09

沙发
0
1

嘗試:

if (size.getCheckedRadioButtonId() == small.getId()){ 
.... 
} 
else if(size.getCheckedRadioButtonId() == medium.getId()){ 
.... 
} 
板凳
0
1

因爲getCheckedRadioButtonId()返回一個整數,你想比較單選按鈕對象的整數。你應該比較small的ID(這是R.id.RBS)和getCheckedRadioButtonId()

switch(size.getCheckedRadioButtonId()){ 
    case R.id.RBS: //your code goes here.. 
        break; 
    case R.id.RBM: //your code goes here.. 
        break; 
    case R.id.RBL: //your code goes here.. 
        break; 
} 
地板
0
1
int selected = size.getCheckedRadioButtonId(); 

switch(selected){ 
case R.id.RBS: 
    break; 
case R.id.RBM: 
    break; 
case R.id.RBL: 
    break; 

} 
0
votes
answers
38 views
+10

如何處理列表視圖上的單選按鈕值

0

我一直在做一個項目,我需要標記出席員工並將其存儲在數據庫中。爲此,我在收音機組中實施單選按鈕,以確定是否存在員工缺席或半天假......要做到這一點,我必須從列表視圖中獲得這些值,並點擊完成按鈕出席必須標記並存儲在數據庫中。從我的自定義列表視圖中處理這些數據的那些單選按鈕的值!! ??如何處理列表視圖上的單選按鈕值

我的自定義列表適配器代碼

public class CustomCalendarAdapter extends ArrayAdapter<String> { 

private final Activity context; 
private final String[] itemname; 
private final Bitmap[] imgid; 

public CustomCalendarAdapter(Activity context, String[] itemname, Bitmap[] imgid) { 
    super(context, R.layout.list_item2, itemname); 

    this.context=context; 
    this.itemname=itemname; 
    this.imgid=imgid; 
} 

@Nonnull 
public View getView(int position, View view,@Nonnull ViewGroup parent) { 
    LayoutInflater inflater=context.getLayoutInflater(); 
    View rowView=inflater.inflate(R.layout.list_item2, null,true); 

    TextView txtTitle = (TextView) rowView.findViewById(R.id.item); 
    ImageView imageView = (ImageView) rowView.findViewById(R.id.icon); 
    TextView extratxt = (TextView) rowView.findViewById(R.id.textView1); 
    final RadioButton rb1 = (RadioButton) rowView.findViewById(R.id.rb1); 
    final RadioButton rb2 = (RadioButton) rowView.findViewById(R.id.rb2); 
    final RadioButton rb3 = (RadioButton) rowView.findViewById(R.id.rb3); 

    rb2.setChecked(true); 
    txtTitle.setText(itemname[position]); 
    imageView.setImageBitmap(imgid[position]); 
    extratxt.setText("Description "+itemname[position]); 

    return rowView; 

} } 

我的列表視圖XML代碼

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" android:layout_width="match_parent" 
android:layout_height="match_parent"> 
<ImageView 
    android:id="@+id/icon" 
    android:layout_width="80dp" 
    android:layout_height="80dp" 
    android:background="@drawable/rowselector" 
    android:padding="5dp" /> 

<LinearLayout android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="80dp" 
    android:layout_weight="1" 
    android:background="@drawable/rowselector" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/item" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Medium Text" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:layout_marginLeft="10dp" 
     android:layout_marginTop="15dp" 
     android:padding="2dp" 
     android:textColor="#000" /> 
    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="TextView" 
     android:layout_marginLeft="10dp"/> 

</LinearLayout> 

<RadioGroup 
    android:id="@+id/rg" 
    android:orientation="horizontal" 
    android:layout_marginTop="25dp" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"> 

    <RadioButton 
     android:id="@+id/rb1" 
     android:text="P" 
     android:padding="2dp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
    <RadioButton 
     android:id="@+id/rb2" 
     android:text="A" 
     android:padding="2dp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
    <RadioButton 
     android:id="@+id/rb3" 
     android:text="HD" 
     android:padding="2dp" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</RadioGroup> 

我與列表視圖活動代碼中,我要顯示列表和處理DONE按鈕

public class Attendance extends AppCompatActivity { 

CustomCalendarAdapter adapter; 
ArrayList<String> strings = new ArrayList<>(); 
ArrayList<Bitmap> bitmaps = new ArrayList<>(); 
ListView lv; 

    @Override 
     protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_attendance); 

    lv = (ListView) findViewById(R.id.list); 

    myinfodbhelper mDbHelper = new myinfodbhelper(this); 
    SQLiteDatabase db = mDbHelper.getReadableDatabase(); 

    Cursor cursor = db.rawQuery("SELECT * FROM " 
      + myinfocontract.myinfoentry.TABLE_NAME,null); 

    while (cursor.moveToNext()) { 
     String currentfname = cursor.getString(cursor.getColumnIndex("name")); 
     byte[] bytes = cursor.getBlob(cursor.getColumnIndex("image")); 
     Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length); 

     strings.add(currentfname); 
     bitmaps.add(bitmap); 
    } 
    cursor.close(); 

    String[] itemname = strings.toArray(new String[0]); 
    Bitmap[] imageid = bitmaps.toArray(new Bitmap[0]); 
    adapter = new CustomCalendarAdapter(this, itemname, imageid); 
    lv.setAdapter(adapter); 
    lv.setEmptyView(tv); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.floatingActionButton); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      //Here I want to handle the radio button check 
      //And mark done by the floatingActionButton id in my listview xml file 
     } 
    }); 

如果這個問題已經回答plz提供鏈接

我找不到相關的解決方案,我的問題,因此我問這個問題......必須做什麼修改?

THX提前...

沙发
0
0

您可以使用下面的代碼得到檢查單選按鈕ID的ID

int checked_btn_id = radioGroup.getCheckedRadioButtonId(); 

您還需要創建一個模型類存儲的價值,並管理滾動發行Issue when scrolled down when radio checked items are not seen

板凳
0
1

步驟1

創建一個Bean類的Y我們的數據用整數變量attendance_type。並將這些數據的列表傳遞給您的適配器。

步驟2

設置點擊收聽你的廣播集團。並設置attendance_type(無論選擇)回到無線電檢查更改爲列表並更改它在數據庫中。

步驟3

現在每次更改考勤時間,你將有一個更新列表。

285
votes
answers
12 views
+10

檢查組中的哪個單選按鈕?

使用WinForms; 有沒有更好的方法來找到一個組的已檢查RadioButton?在我看來,下面的代碼不應該是必要的。當你檢查一個不同的RadioButton然後它知道哪一個取消選中...所以它應該知道哪個被檢查。如何在不執行大量if語句(或切換)的情況下提取該信息。

  RadioButton rb = null; if(m_RadioButton1.Checked == true){rb = m_RadioButton1; } else if(m_RadioButton2.Checked == true){rb = m_RadioButton2; } else if(m_RadioButton3.Checked == true){rb = m_RadioButton3; }  
    
        
up vote 209 down vote accepted favorite
沙发
+2090
+50

你可以使用LINQ:

  var checkedButton = container.Controls.OfType&lt; RadioButton&gt;().FirstOrDefault(r =&gt; r.Checked);   

請注意,這要求所有單選按鈕直接位於同一容器中(例如,Panel或Form),並且容器中只有一個組。如果不是這種情況,您可以在構造函數中為每個組創建 List&lt; RadioButton&gt; ,然後編寫 list.FirstOrDefault(r =&gt; r.Checked)

+260

對於沒有LINQ的人:

  RadioButton GetCheckedRadio(Control container){foreach(container.Controls中的var控件){RadioButton radio = control as RadioButton; if(radio!= null&amp;&amp; radio.Checked){return radio; 返回null; }  
     
			
        
+100

OP希望獲得經過檢查的RadioButton BY GROUP。雖然@SLaks的答案非常好,但它並沒有真正回答OP的主要問題。為了改進@SLaks的答案,只需將LINQ更進一步。

這是我自己的工作代碼中的一個例子。根據普通的WPF,我的RadioButtons包含在 Grid (名為“myGrid”)中,其中包含許多其他類型的控件。我在網格中有兩個不同的RadioButton組。

從特定組中獲取已檢查的RadioButton:

  List&lt; RadioButton&gt; radioButtons = myGrid.Children.OfType&lt; RadioButton&gt;()。ToList(); RadioButton rbTarget = radioButtons .Where(r =&gt; r.GroupName ==“GroupName”&amp;&amp; r.IsChecked)。單();   

如果你的代碼有可能沒有檢查RadioButtons,那麼使用 SingleOrDefault()(如果我沒有使用三態按鈕,那麼我總是設置一個按鈕“IsChecked”作為默認選擇。)

r.GroupName ==“GroupName”和r.IsChecked是不同類型的(bool和bool?),你應該使用r.IsChecked.Value,它是bool類型。 - 邁克2015年10月30日16:45

try .Where(r => r.GroupName ==“GroupName”&& r.IsChecked == true)因為r.IsChecked是可以為空的bool屬性。 - Firnas 2016年8月1日9:19

myGrid在這裡引用了什麼。 - Unnikrishnan 17年1月22日11:18

@Mike你能告訴我們這裡的“radioButtons”是什麼嗎? - Bella Swan 4月12日7:05

@BellaSwan - 查看代碼 - 您創建所有單選按鈕的列表並將其分配給變量。然後,在同一個變量上,您需要運行Where選擇並將其分配給rbTarget。 - 邁克4月12日10:05

+10

您可以使用Extension方法迭代RadioButton的Parent.Controls集合。這允許您查詢同一範圍內的其他RadioButton。使用兩種擴展方法,您可以使用第一種方法確定是否選擇了組中的任何RadioButtons,然後使用第二種方法獲取選擇。RadioButton Tag字段可用於保存Enum以識別組中的每個RadioButton:

  public static int GetRadioSelection(此RadioButton rb,int Default = -1){foreach(Control c in rb.Parent.Controls){RadioButton r = c as RadioButton; if(r!= null&amp;&amp; r.Checked)返回Int32.Parse((string)r.Tag); } return Default; } public static bool IsRadioSelected(this RadioButton rb){foreach(控制c in rb。Parent.Controls){RadioButton r = c as RadioButton; if(r!= null&amp;&amp; r.Checked)返回true; } return false; }   

這是一個典型的使用模式:

  if(!MyRadioButton.IsRadioSelected()){MessageBox.Show(“No radio selected。”); 返回; } int selection = MyRadioButton.GetRadioSelection;   } int selection = MyRadioButton.GetRadioSelection;   } int selection = MyRadioButton.GetRadioSelection;  
     
			
        
+10

除了CheckedChangedEvent接線之外,可以使用Controls“Tag”屬性來區分單選按鈕......(意大利麵條代碼)替代方案將是“TabIndex”屬性; P

這一切意味著什麼? - TS 12年5月5日20:52

這意味著你可以在所選的radiobutton id上快速使用switch-case(使用屬性System.Windows.Forms.Control.Tag),如果你根本不理解我對問題的補充,請不要降低速率。 - Binkan Salaryman 2013年12月5日21:13

我知道你認為這可能會使你的xml看起來更好,但提供命名空間和相應的xsd是更好的做法。 - 將於2009年3月9日12:11發布

問題是什麼? - leppie 09年3月9日12:18

我希望我的xml只作為,我在談論省略xmlns:xsi和xmlns:xsd名稱空間。 - NetSide 09年3月9日12:30

記錄:總的來說,這是一個愚蠢的錯誤。命名空間是有原因的,將它們全部刪除會破壞事物。像反序列化這樣的事情。 - 約翰桑德斯2009年7月25日23:57

請注意,有時它不是愚蠢而不是錯誤。例如,可能需要生成文檔片段並在以後將它們放在一起。就個人而言,我需要生成許多類似和非常大的文檔。它們都在樹的深處有相同的大部分。所以我必須事先生成不變的部分,並在生成文檔時將它們作為字節數組插入。因此,為了使輸出更具可讀性和更小,我需要省略內部部分中的一些命名空間聲明,因為它們存在​​於更高級別。 - 德米特里塔什科夫於2010年12月13日16:05

+10

有時在這樣的情況下,我想念我的青春,當Access是我選擇的毒藥時,我可以給一組中的每個單選按鈕賦予它自己的價值。

我在C#中的黑客是使用標籤設置值,當我從組中進行選擇時,我讀取所選單選按鈕的標籤值。在這個例子中, directionGroup 是我有四個五個單選按鈕的組,其中“無”和“NE”,“SE”,“NW”和“SW”作為其他四個標籤radiobuttons。

我主動使用一個按鈕來捕獲已選中按鈕的值,因為因為為所有按鈕的CHeckCHanged事件分配一個事件處理程序會導致觸發EACH按鈕,因為更改一個會更改所有按鈕。因此,sender的值始終是組中的第一個RadioButton。相反,當我需要找出哪個被選中時,我使用這個方法,我想要在每個RadioButton的Tag屬性中檢索值。

  private void ShowSelectedRadioButton(){List&lt;單選按鈕&GT; buttons = new List&lt; RadioButton&gt;(); string selectedTag =“沒有選擇”; foreach(控制c在directionGroup.Controls中){if(c.GetType()== typeof(RadioButton)){buttons.Add((RadioButton)c); var selectedRb =(from rb in buttons where rb.Checked == true select rb).FirstOrDefault(); if(selectedRb!= null){selectedTag = selectedRb.Tag.ToString(); } FormattableString result = $“Selected Radio button tag = {selectedTag}”; MessageBox.Show(result.ToString()); }   

僅供參考,我已經在我的工作中測試並使用了它。

Joey

僅修改'FormatableString'結果,我能夠使用我的程序中的代碼。我也沒有意識到radioButton Tag。這就是答案的答案。太太先生。 - Unnikrishnan 17年1月22日10:49

愚蠢與否,我同意NetSide - 簡單而乾淨。 - sirthomas 2013年6月19日19:46

0

如果你想將選擇保存到文件或任何其他內容並稍後調用,這裡我做的是

  string [] lines = new string [1]; lines [0] = groupBoxTes.Controls.OfType&lt; RadioButton&gt;().FirstOrDefault(r =&gt; r.Checked).Text; File.WriteAllLines(“Config.ini”,行);   

然後用

  string [] ini = File.ReadAllLines(“Config.ini”)調用它; groupBoxTes.Controls.OfType&lt; RadioButton&gt;().FirstOrDefault(r =&gt;(r.Text == ini [0]))。Checked = true;  
     
			
        

這在技術上沒有回答這個問題 - 你使用的是XmlTextWriter,而不是XmlWriter。我注意到因為我想使用XmlWriter,我可以使用XmlWriterSettings。 - Abacus 2013年4月15日16:13

@Abacus你讀過這段代碼嗎?它使用XmlWriter和XmlWriterSettings。 - Cheeso 2013年4月20日4:35

我的壞,我一定錯過了。 - Abacus 2013年4月22日13:33

0

如果要獲取控件中所選單選按鈕的索引,可以使用此方法:

  public static int getCheckedRadioButton(Control c){int i; 嘗試{Control.ControlCollection cc = c.Controls; for(i = 0; i&lt; cc.Count; i ++){RadioButton rb = cc [i] as RadioButton; if(rb.Checked){return i; catch {i = -1; 返回i; }   

使用示例:

  int index = getCheckedRadioButton(panel1);   

代碼沒有經過良好測試,但似乎索引順序是從左到右,從上到下,就像讀取文本時一樣。如果沒有找到單選按鈕,該方法返回-1。

更新:如果控件內沒有單選按鈕,我的第一次嘗試就不起作用了。我添加了一個try和catch塊來修復它,現在這個方法似乎有效。

謝謝你這個非常詳細的答案!+1 - Jens H Jun 21年12月21日15:08

謝謝你的好評。我上週一直在吃飯,睡覺和呼吸!:) - 4月33日12月22日4點30分

“微軟的文檔明確表示它不受支持。” 關心分享在哪裡? - Dave Van den Eynde 12月22日8:14

Dave,正如你在我對類似問題的回答中發布的那樣,XmlSerializer:刪除不必要的xsi和xsd命名空間,鏈接在這裡:XmlSerializerNamespaces Class。 - 2012年6月23日下午4點22分四點半

您仍然將名稱空間傳遞給Serialize方法。我認為提供公共成員的想法是你不必這樣做?如果不將它傳遞給Serialize方法,我無法使它工作。不幸的是,我無法訪問該方法調用。我只能設置要使用的XmlSerializer實例。 - 粉碎於18年1月10日22:43

0

如果你使用的是WinForms,GroupBox有一個Validated事件。

  private void grpBox_Validated(object sender,EventArgs e){GroupBox g = sender as GroupBox; var a = from RadioButton r in g.Controls where r.Checked == true select r.Name; strChecked = a.First(); }  
     
			
        
0

對於使用VB.NET的開發人員


 私有函數GetCheckedRadio(容器)As RadioButton For Each control in container.Children Dim radio As RadioButton = TryCast (control,RadioButton)如果收音機IsNot Nothing AndAlso radio.IsChecked則返回收音機End If If Next返回Nothing End Function