Swift 3: float или double value для строки, содержащей плавающую точку с запятой
extension String {
var floatValue: Float {
let nf = NumberFormatter()
nf.decimalSeparator = "."
if let result = nf.number(from: self) {
return result.floatValue
} else {
nf.decimalSeparator = ","
if let result = nf.number(from: self) {
return result.floatValue
}
}
return 0
}
var doubleValue:Double {
let nf = NumberFormatter()
nf.decimalSeparator = "."
if let result = nf.number(from: self) {
return result.doubleValue
} else {
nf.decimalSeparator = ","
if let result = nf.number(from: self) {
return result.doubleValue
}
}
return 0
}
}
Пример:
"5,456".floatValue //5.456
"5.456".floatValue //5.456
"5,456".doubleValue //5.456
"5.456".doubleValue //5.456
"5,456".doubleValue.rounded() //5
"5,6".doubleValue.rounded() //6
Каждое управление имеет дочерние элементы управления, таким образом, необходимо было бы использовать рекурсию для достижения их всех:
protected void DisableControls(Control parent, bool State) {
foreach(Control c in parent.Controls) {
if (c is DropDownList) {
((DropDownList)(c)).Enabled = State;
}
DisableControls(c, State);
}
}
Затем назовите его как так:
protected void Event_Name(...) {
DisableControls(Page,false); // use whatever top-most control has all the dropdowns or just the page control
} // divs, tables etc. can be called through adding runat="server" property
Было бы самым легким при помещении всех средств управления, Вы хотите отключить в панели и затем просто позволить/запретить панель.
Необходимо сделать это рекурсивное, я подразумеваю, что необходимо отключить дочерние элементы управления средств управления к:
protected void Page_Load(object sender, EventArgs e)
{
DisableChilds(this.Page);
}
private void DisableChilds(Control ctrl)
{
foreach (Control c in ctrl.Controls)
{
DisableChilds(c);
if (c is DropDownList)
{
((DropDownList)(c)).Enabled = false;
}
}
}
Вот версия VB.NET, которая также берет дополнительный параметр, таким образом, она может использоваться для включения средств управления также.
Частный Sub SetControls (ByVal parentControl Как Управление, Дополнительные ByVal включают Как булевская переменная = Ложь),
For Each c As Control In parentControl.Controls
If TypeOf (c) Is CheckBox Then
CType(c, CheckBox).Enabled = enable
ElseIf TypeOf (c) Is RadioButtonList Then
CType(c, RadioButtonList).Enabled = enable
End If
SetControls(c)
Next
End Sub
Если Вы действительно хотите отключить все средства управления на странице, то самый легкий способ сделать это должно установить свойство Disabled формы на истинный.
ASPX:
<body>
<form id="form1" runat="server">
...
</form>
</body>
Код - позади:
protected void Page_Load(object sender, EventArgs e)
{
form1.Disabled = true;
}
Но конечно, это также отключит Ваш флажок, таким образом, Вы не сможете нажать флажок, чтобы повторно включить средства управления.