问题描述
我不确定是否可以这样做,但是我希望能够限制任何人更改/删除文本框中的当前文本,但允许他们添加吗?这样就不会意外删除数据,但是如果出现问题,用户可以添加信息/说明。
我尝试使用KeyDown和KeyPress事件来执行此操作(如下所示):
<div class="form-row">
<div class="medical-question-btns btn-group btn-group-toggle btn-group-vertical"
data-toggle="buttons">
<!-- ============= LABEL ============= -->
<label class="btn btn-primary my-2 pl-5" id="label_q18_a1">
<svg class="check-Box-outline-blank icon-left icon-circle"
id="label_q18_a1" xmlns="http://www.w3.org/2000/svg"
width="100%" viewBox="0 0 24 24">
<path
d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" />
</svg>
<svg class="check-Box-checked icon-left icon-check-circle"
xmlns="http://www.w3.org/2000/svg" width="100%"
viewBox="0 0 24 24" class="bi bi-check-circle-fill">
<path
d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" />
</svg>
<input type="checkBox" name="q18_a1" id="q18_a1"
autocomplete="off">
<p>Any condition where sex is not advised</p>
</label>
<label class="btn btn-primary my-2 pl-5" id="label_q18_a2">
<svg class="check-Box-outline-blank icon-left icon-circle"
id="label_q18_a1" xmlns="http://www.w3.org/2000/svg"
width="100%" viewBox="0 0 24 24">
<path
d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" />
</svg>
<svg class="check-Box-checked icon-left icon-check-circle"
xmlns="http://www.w3.org/2000/svg" width="100%"
viewBox="0 0 24 24" class="bi bi-check-circle-fill">
<path
d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" />
</svg>
<input type="checkBox" name="q18_a2" id="q18_a2"
autocomplete="off">
<p>Kidney problems including having had a kidney transplant</p>
</label>
<label class="btn btn-primary my-2 pl-5" id="label_q18_a3">
<svg class="check-Box-outline-blank icon-left icon-circle"
id="label_q18_a1" xmlns="http://www.w3.org/2000/svg"
width="100%" viewBox="0 0 24 24">
<path
d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" />
</svg>
<svg class="check-Box-checked icon-left icon-check-circle"
xmlns="http://www.w3.org/2000/svg" width="100%"
viewBox="0 0 24 24" class="bi bi-check-circle-fill">
<path
d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" />
</svg>
<input type="checkBox" name="q18_a3" id="q18_a3"
autocomplete="off">
<p>Liver problems</p>
</label>
<label class="btn btn-primary my-2 pl-5" id="label_q18_a4">
<svg class="check-Box-outline-blank icon-left icon-circle"
id="label_q18_a1" xmlns="http://www.w3.org/2000/svg"
width="100%" viewBox="0 0 24 24">
<path
d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" />
</svg>
<svg class="check-Box-checked icon-left icon-check-circle"
xmlns="http://www.w3.org/2000/svg" width="100%"
viewBox="0 0 24 24" class="bi bi-check-circle-fill">
<path
d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" />
</svg>
<input type="checkBox" name="q18_a4" id="q18_a4"
autocomplete="off">
<p>Neurological problems like multiple sclerosis or motor neuron
disease</p>
</label>
<label class="btn btn-primary my-2 pl-5" id="label_q18_a5">
<svg class="check-Box-outline-blank icon-left icon-circle"
id="label_q18_a1" xmlns="http://www.w3.org/2000/svg"
width="100%" viewBox="0 0 24 24">
<path
d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" />
</svg>
<svg class="check-Box-checked icon-left icon-check-circle"
xmlns="http://www.w3.org/2000/svg" width="100%"
viewBox="0 0 24 24" class="bi bi-check-circle-fill">
<path
d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" />
</svg>
<input type="checkBox" name="q18_a5" id="q18_a5"
autocomplete="off">
<p>HIV</p>
</label>
<label class="btn btn-primary my-2 pl-5" id="label_q18_a6">
<svg class="check-Box-outline-blank icon-left icon-circle"
id="label_q18_a1" xmlns="http://www.w3.org/2000/svg"
width="100%" viewBox="0 0 24 24">
<path
d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" />
</svg>
<svg class="check-Box-checked icon-left icon-check-circle"
xmlns="http://www.w3.org/2000/svg" width="100%"
viewBox="0 0 24 24" class="bi bi-check-circle-fill">
<path
d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" />
</svg>
<input type="checkBox" name="q18_a6" id="q18_a6"
autocomplete="off">
<p>Spinal injury or paralysis</p>
</label>
<label class="btn btn-primary my-2 pl-5" id="label_q18_a7">
<svg class="check-Box-outline-blank icon-left icon-circle"
id="label_q18_a1" xmlns="http://www.w3.org/2000/svg"
width="100%" viewBox="0 0 24 24">
<path
d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" />
</svg>
<svg class="check-Box-checked icon-left icon-check-circle"
xmlns="http://www.w3.org/2000/svg" width="100%"
viewBox="0 0 24 24" class="bi bi-check-circle-fill">
<path
d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" />
</svg>
<input type="checkBox" name="q18_a7" id="q18_a7"
autocomplete="off">
<p>PrevIoUs surgery on your prostate or pelvis</p>
</label>
<label class="btn btn-primary my-2 pl-5" id="label_q18_a8">
<svg class="check-Box-outline-blank icon-left icon-circle"
id="label_q18_a1" xmlns="http://www.w3.org/2000/svg"
width="100%" viewBox="0 0 24 24">
<path
d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" />
</svg>
<svg class="check-Box-checked icon-left icon-check-circle"
xmlns="http://www.w3.org/2000/svg" width="100%"
viewBox="0 0 24 24" class="bi bi-check-circle-fill">
<path
d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" />
</svg>
<input type="checkBox" name="q18_a8" id="q18_a8"
autocomplete="off">
<p>Radiation therapy to your pelvis</p>
</label>
<label class="btn btn-primary my-2 pl-5" id="label_q18_a9">
<svg class="check-Box-outline-blank icon-left icon-circle"
id="label_q18_a1" xmlns="http://www.w3.org/2000/svg"
width="100%" viewBox="0 0 24 24">
<path
d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" />
</svg>
<svg class="check-Box-checked icon-left icon-check-circle"
xmlns="http://www.w3.org/2000/svg" width="100%"
viewBox="0 0 24 24" class="bi bi-check-circle-fill">
<path
d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" />
</svg>
<input type="checkBox" name="q18_a9" id="q18_a9"
autocomplete="off">
<p>None apply</p>
</label>
<!-- ============= LABEL ============= -->
</div>
</div>
但是由于它不会在键入每个字符之后触发,所以它不起作用(即.OldValue =“ Hello”和.Value =“ Good Bye”-不正确!)
我真的在寻找一个有创意的想法,因为我认为使用事件是行不通的。
解决方法
在控件的“获取焦点”事件中,检查控件是否为空。
使用伪代码:
If Control Is Empty Then Exit
Else Set Enabled = No and Locked = Yes
应该这样做。如果要对多个控件执行此操作,只需将上面的过程设置为接受当前控件作为参数的过程,然后从事件处理程序中调用该过程。如果将其设为函数,则可以将函数调用直接放在属性表中,例如“ = LockControl(Me!CurrentControl)”。我更喜欢使用事件处理程序。
这是我检查空控件的方法:
Public Function IsEmptyControl(ctl As Variant) As Boolean
' ****************************************************************************
' PURPOSE: Determines if control is empty,that is,either all blanks or null
'
' AUTHOR: Paul Strauss
' Paul@PStrauss.net
'
' DATE: December 31,2000
'
' NOTES: Returns True if control is empty
'
' CHANGE LOG:
'
' ****************************************************************************
On Error GoTo Err_IsEmptyControl
IsEmptyControl = IsNull(ctl) Or (Len(Trim(ctl)) = 0)
Exit_IsEmptyControl:
Exit Function
Err_IsEmptyControl:
Select Case Err.Number
Case Else
Call ErrHandler(Object:=CodeProject.Name,procedure:="IsEmptyControl",ErrNum:=Err.Number,ErrDesc:=Err.Description)
Resume Exit_IsEmptyControl
End Select
结束功能