我正在使用此代碼根據名稱使復選框可見。但是如果我使用控制元件,我無法檢查復選框是否被選中(因為我想在選中狀態下顯示復選框)。
我的代碼:
for (int i = 0; i < Program.productOperationCount; i )
{
this.Controls.Find($"checkBox{i 1}", true)[0].Visible = true;
}
我需要這樣的東西,但沒有方法:
this.Controls.Find($"checkBox{i 1}", true)[0].Checked = true;
uj5u.com熱心網友回復:
試試這樣。
foreach (var checkBox in this.Controls.OfType<CheckBox>())
{
if (checkBox.Checked == true && checkBox.Name =="cbname")
{
//do stuff
}
}
uj5u.com熱心網友回復:
使用回圈來導航表單控制元件和控制變數來計算復選框控制元件。
int j = 0;
for(int i = 0; i < this.Controls.Count; i )
{
if(this.Controls[i] is CheckBox)
{
CheckBox chk = (CheckBox)this.Controls.Find($"checkBox{j 1}", true)[0];
chk.Checked = true;
j ;
}
}
或者
foreach (var ctr in this.Controls)
{
if (ctr is CheckBox)
{
CheckBox chk = (CheckBox)ctr;
chk.Checked = true;
}
}
uj5u.com熱心網友回復:
您的表單是一個控制元件。每個 Control 都有一個 ControlCollection 型別的屬性 Controls。ControlCollection 實作了 IList,后者實作了 IEnumerable。
這就是我們開始考慮 LINQ 的時候。
每當您有一個實作 IEnumerable 的物件時,該物件就表示一系列非常相似的專案。要獲取此類序列中的所有專案MyClass,請使用Enumerable.OfType
include System.Linq;
private IEnumerable<CheckBox> CheckBoxes => this.Controls.OfType<CheckBox>();
換句話說:要獲取我的控制元件集合中的所有復選框,請獲取this.Controls實作 IEnumerable的 property 的值。在此序列中,僅保留型別為 CheckBox(或派生型別)的控制元件。
要獲取所有選中的復選框:
private IEnumerable<CheckBox> CheckedCheckBoxes => this.CheckBoxes
.Where(checkBox => checkBox.Checked);
換句話說:要獲取所有選中的 CheckBox,請獲取 property 的值,該值this.CheckBoxes表示 CheckBox 的可列舉序列。從這個 CheckBoxes 序列中,只保留那些對屬性 Checked 具有真值的 CheckBoxes。
uj5u.com熱心網友回復:
您應該創建一個自定義類,其中包含您想要的物件和一個bool被呼叫的_checked. 就這么簡單!
一個類,如:
[System.Serializable]
public class ExampleWithBoolHAHAHAHA
{
public bool _checked = false;
public object yourObjectInHere;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/365947.html
上一篇:如何在C#中正確移動圖片框
下一篇:C#WinForms(.NETFramework)DataGridViewwithButton、ComboBox&TextBox:使用按鈕添加新行以添加組合框項時出錯
