vb.net-通过字符串变量以编程方式设置表格背景色

时间:2019-04-30 15:12:40

标签: vb.net formatting backcolor

我有一个包含RGB值的字符串,例如“ 224,224,224”。 我正在尝试使用该值设置表单的背景颜色,但是它出错了,我不确定为什么。

我正在尝试...

 If Not this_dialog_backcolor = "" Then _
     new_dialog.BackColor = Color.FromArgb(this_dialog_backcolor)

我得到了例外

  

控件不支持透明背景色。

我试图将字符串修改为包含第4个值,因此它变成了“ 255,224,224,224”,并且也出现了错误,这是因为算术运算导致重载。

我还尝试过将字符串格式化为:

 Color [A=255, R=33, G=33, B=33]

这次,我得到异常'从字符串'Color [A = 255,R = 33,G = 33,B = 33]转换为整数”是无效的。

任何需要帮助的人。

3 个答案:

答案 0 :(得分:1)

FromArgb是一种不接受字符串作为参数的方法。因此,此处会发生自动转换,您不能确定该转换是否可以完成您需要做的事情。
如果您有Option Strict On,则该错误将在编译时捕获。

您可以用不同的方法来解决问题,例如,您可以将字符串分成多个子部分,然后使用正确的颜色值调用FromArgb

Dim s As String = "224,224,224"

if Not string.IsNullOrEmpty(s) Then
    Dim p = s.Split(","c).Select(Function(x) int32.Parse(x.Trim()))
    form1.BackColor = Color.FromArgb(p(0),p(1),p(2))
End If

答案 1 :(得分:1)

您可以使用命名空间public ActionResult FileSave(FileSaveRequest request) { } public class FileSaveRequest{ public List<FilesUploadModel> Models { get;set; } } 中的ColorConverter

System.Drawing

它还可以转换以网页颜色名称(如Dim converter = New ColorConverter() Dim color = DirectCast(converter.ConvertFromString("255,224,224"), Color) 和十六进制格式(如"PaleVioletRed")指定的颜色。

答案 2 :(得分:0)

所以我设法实现了我想要的目标,但是我不确定它的效率...感觉有点脏...

fs.writeFileSync

就像我说的那样,它可以工作,但是我敢肯定必须有一种更清洁的方法。 有人吗?