精华内容
下载资源
问答
  • 以前神经网络对我来说是一个非常陌生的东西,准备做这个小项目之前几乎没有了解过相关知识,所以这里可能有些地方表达的不妥当或者不正确,望请见谅。上一章节写到如何采集数据,这一章就写一写神经网络的部分,这...

    86071ff7df059b9d01a1d96cf4c051b8.png

    又鸽了非常久,虽然没啥人看,还是非常抱歉。

    以前神经网络对我来说是一个非常陌生的东西,在准备做这个小项目之前几乎没有了解过相关知识,所以这里可能有些地方表达的不妥当或者不正确,望请见谅。

    上一章节写到如何采集数据,这一章就写一写神经网络的部分,这部分为在电脑上运行的部分,所以需要将上一步采集来的数据拷贝到电脑中。

    直接使用OpenCV的机器学习模块非常方便,核心的训练部分只需要7行代码,这里就大概讲讲每句代码实现的功能。使用的OpenCV版本是3.4.2,现在最新的已经更新到4.x了,不知道有没有什么改动。

    b1176822f00523b78d5fb33d1da17507.png

    在这七行代码中,第一句就需要创建一个神经网络:

    model = cv2.ml.ANN_MLP_create()

    创建完毕后需要对这个网络的结构以及一些参数进行设置:

    model.setLayerSizes(np.int32([38400,16,3]))  # 将网络结构设置为38400个输入层,16个隐层,3个输出层。

    理论上隐层数量越多,训练时间就越长,结果就越好,还可以加入多层隐层。我分别使用16、32、64个隐层都训练过,64层的准确率是最高的,大约95%左右,使用我这个i5的苏菲婆大概需要一个小时左右,而16层速度最快,十分钟不到,也能达到一个90%左右的准确率。

    接下来需要设置激活函数和训练停止条件,代码如下:

    model.setActivationFunction(cv2.ml.ANN_MLP_SIGMOID_SYM)
    model.setTermCriteria(( cv2.TERM_CRITERIA_COUNT | cv2.TERM_CRITERIA_EPS, 500, 0.001))

    不要问我为什么使用cv2.ml.ANN_MLP_SIGMOID_SYM函数,因为我在网上查找的资料中都告诉我只有这一个,所以也不解释什么了(因为没得选233)。而这个停止条件分为两个,分别是计算条件次数,和计算精度,0.001就相当于精度达到了0.1%。

    接下来这三行我其实不是很明白所代表的意义,我的理解为训练方法和学习速率,最后一条的作用是为了防止陷入局部最小值的函数,后两条默认为0.1。(希望在以后深入学习中能够明白其中的原理)。

    model.setTrainMethod(cv2.ml.ANN_MLP_BACKPROP)
    model.setBackpropWeightScale(0.1)
    model.setBackpropMomentumScale(0.1)

    以上这7行代码为核心的负责训练程序的代码,这些设定完成过后,还需要一步来开始训练,代码如下:

    num_iter = model.train(np.float32(train), cv2.ml.ROW_SAMPLE, np.float32(train_labels))

    而光有这些是远远不够的,还需要数据读取、创建训练集和测试集、计算准确率和保存生成的模型。

    读取数据需要对采集来的数据加载到内存中,电脑内存小的要多注意一些,4000多个数据就1G多了,代码如下:

    # load training data
    image_array = np.zeros((1, 38400))
    label_array = np.zeros((1, 3), 'float')
    training_data = glob.glob('./training_data/*.npz') #文件位置可以自己设定
    
    # if no data, exit
    if not training_data:
        print("No training data in directory, exit")
        sys.exit()
    
    for single_npz in training_data: 
        with np.load(single_npz) as data:
            train_temp = data['train']
            train_labels_temp = data['train_labels']
        image_array = np.vstack((image_array, train_temp))
        label_array = np.vstack((label_array, train_labels_temp))
    
    X = image_array[1:, :] #加载完成的图像数据
    y = label_array[1:, :] #加载完成的标签数据
    print('Image array shape: ', X.shape)
    print('Label array shape: ', y.shape)

    读取完成后需要对其进行一个分割,因为不光要有训练集,还需要有测试集来测试我们的模型准确率,这个也有现成的模块,分割数据集代码如下:

    from sklearn.model_selection import train_test_split
    train, test, train_labels, test_labels = train_test_split(X, y, test_size=0.2)

    测试部分代码如下:

    # train data
    ret_0, resp_0 = model.predict(train)
    prediction_0 = resp_0.argmax(-1)
    true_labels_0 = train_labels.argmax(-1)
    
    train_rate = np.mean(prediction_0 == true_labels_0)
    print('Train accuracy: ', "{0:.2f}%".format(train_rate * 100))
    
    # test data
    ret_1, resp_1 = model.predict(test)
    prediction_1 = resp_1.argmax(-1)
    true_labels_1 = test_labels.argmax(-1)
    
    test_rate = np.mean(prediction_1 == true_labels_1)
    print('Test accuracy: ', "{0:.2f}%".format(test_rate * 100))

    最终保存模型:

    # save model
    model.save('mlp_xml/mlp.xml')

    以上,为模型的训练程序,将会生成一个名为mlp.xml的模型文件,后续还需要将模型加载到小车上来实现小车的自动驾驶。

    丶冬沐:自动驾驶小车——(零)从零开始zhuanlan.zhihu.com
    b8fd4c1e0da18f0623d56e2327847cba.png
    丶冬沐:自动驾驶小车——(一)软件准备zhuanlan.zhihu.com
    b8fd4c1e0da18f0623d56e2327847cba.png
    丶冬沐:自动驾驶小车——(二)硬件准备zhuanlan.zhihu.com
    b8fd4c1e0da18f0623d56e2327847cba.png
    丶冬沐:自动驾驶小车——(三)小车!出发!zhuanlan.zhihu.com
    b8fd4c1e0da18f0623d56e2327847cba.png
    丶冬沐:自动驾驶小车——(四)数据采集zhuanlan.zhihu.com
    b8fd4c1e0da18f0623d56e2327847cba.png

    完整训练的代码如下:

    import cv2
    import numpy as np
    import glob
    import sys
    from sklearn.model_selection import train_test_split
    
    print('Loading training data...')
    e0 = cv2.getTickCount()
    
    # load training data
    image_array = np.zeros((1, 38400))
    label_array = np.zeros((1, 3), 'float')
    training_data = glob.glob('./training_data/*.npz')
    
    # if no data, exit
    if not training_data:
        print("No training data in directory, exit")
        sys.exit()
    
    for single_npz in training_data:
        with np.load(single_npz) as data:
            train_temp = data['train']
            train_labels_temp = data['train_labels']
        image_array = np.vstack((image_array, train_temp))
        label_array = np.vstack((label_array, train_labels_temp))
    
    X = image_array[1:, :]
    y = label_array[1:, :]
    print('Image array shape: ', X.shape)
    print('Label array shape: ', y.shape)
    
    e00 = cv2.getTickCount()
    time0 = (e00 - e0)/ cv2.getTickFrequency()
    print('Loading image duration:', time0)
    
    # train test split, 8:2
    train, test, train_labels, test_labels = train_test_split(X, y, test_size=0.2)
    
    # set start time
    e1 = cv2.getTickCount()
    
    # create MLP
    
    model = cv2.ml.ANN_MLP_create()
    # Create ANN layer
    model.setLayerSizes(np.int32([38400,16,3]))
    model.setActivationFunction(cv2.ml.ANN_MLP_SIGMOID_SYM)
    model.setTermCriteria(( cv2.TERM_CRITERIA_COUNT | cv2.TERM_CRITERIA_EPS, 500, 0.001))
    # BP Method
    model.setTrainMethod(cv2.ml.ANN_MLP_BACKPROP)
    # speed of learning
    model.setBackpropWeightScale(0.01)
    # don't be part of lowest
    model.setBackpropMomentumScale(0.1)
    #criteria = (cv2.TERM_CRITERIA_COUNT | cv2.TERM_CRITERIA_EPS, 500, 0.0001)
    #criteria2 = (cv2.TERM_CRITERIA_COUNT, 100, 0.001)
    print('Training MLP ...')
    #num_iter = model.train(train, train_labels, None, params = params)
    num_iter = model.train(np.float32(train), cv2.ml.ROW_SAMPLE, np.float32(train_labels))
    
    # set end time
    e2 = cv2.getTickCount()
    time = (e2 - e1)/cv2.getTickFrequency()
    print('Training duration:', time)
    #print 'Ran for %d iterations' % num_iter
    
    # train data
    ret_0, resp_0 = model.predict(train)
    prediction_0 = resp_0.argmax(-1)
    true_labels_0 = train_labels.argmax(-1)
    
    train_rate = np.mean(prediction_0 == true_labels_0)
    print('Train accuracy: ', "{0:.2f}%".format(train_rate * 100))
    
    # test data
    ret_1, resp_1 = model.predict(test)
    prediction_1 = resp_1.argmax(-1)
    true_labels_1 = test_labels.argmax(-1)
    
    test_rate = np.mean(prediction_1 == true_labels_1)
    print('Test accuracy: ', "{0:.2f}%".format(test_rate * 100))
    
    # save model
    model.save('mlp_xml/mlp.xml')
    展开全文
  • 使用自定义模型类从头开始训练线性回归,比较PyTorch 1.x和TensorFlow 2.x之间的自动差异和动态模型子类化方法,这篇简短的文章重点介绍如何PyTorch 1.x和TensorFlow 2.x中分别使用带有模块/模型API的动态子类化...

    89f00d8d708dc47759b64cab9d27dd1a.png

    使用自定义模型类从头开始训练线性回归,比较PyTorch 1.x和TensorFlow 2.x之间的自动差异和动态模型子类化方法,

    这篇简短的文章重点介绍如何在PyTorch 1.x和TensorFlow 2.x中分别使用带有模块/模型API的动态子类化模型,以及这些框架在训练循环中如何使用AutoDiff获得损失的梯度并从头开始实现 一个非常幼稚的渐变后代实现。

    生成噪声的线性数据

    为了专注于自动差异/自动渐变功能的核心,我们将使用最简单的模型,即线性回归模型,然后我们将首先使用numpy生成一些线性数据,以添加随机级别的噪声。

    def generate_data(m=0.1, b=0.3, n=200):
    x = np.random.uniform(-10, 10, n)
    noise = np.random.normal(0, 0.15, n)
    y = (m * x + b ) + noise
    return x.astype(np.float32), y.astype(np.float32)
    x, y = generate_data()
    plt.figure(figsize = (12,5))
    ax = plt.subplot(111)
    ax.scatter(x,y, c = "b", label="samples")

    2f029cd8cb5eec5e7eb98f6ddd85a1df.png

    模型

    然后,我们将在TF和PyTorch中实现从零开始的线性回归模型,而无需使用任何层或激活器,而只需定义两个张量w和b,分别代表线性模型的权重和偏差,并简单地实现线性函数即可:y = wx + b

    正如您在下面看到的,我们的模型的TF和PyTorch类定义基本上完全相同,但在一些api名称上只有很小的差异。

    唯一值得注意的区别是,PyTorch明确地使用Parameter对象定义权重和要由图形“捕获”的偏置张量,而TF似乎在这里更“神奇”,而是自动捕获用于图形的参数。

    确实在PyTorch参数中是Tensor子类,当与Module api一起使用时,它们具有非常特殊的属性,可以自动将自身添加到Module参数列表中,并会出现在在parameters()迭代器中。

    无论如何,两个框架都能够从此类定义和执行方法(callforward ),参数和图形定义中提取信息,以便向前执行图形执行,并且正如我们将看到的那样,通过自动可微分获得梯度功能,以便能够执行反向传播。

    TensorFlow动态模型

    class LinearRegressionKeras(tf.keras.Model):
    def __init__(self):
    super().__init__()
    self.w = tf.Variable(tf.random.uniform(shape=[1], -0.1, 0.1))
    self.b = tf.Variable(tf.random.uniform(shape=[1], -0.1, 0.1))
    def __call__(self,x):
    return x * self.w + self.b

    PyTorch动态模型

    class LinearRegressionPyTorch(torch.nn.Module):
    def __init__(self):
    super().__init__()
    self.w = torch.nn.Parameter(torch.Tensor(1, 1).uniform_(-0.1, 0.1))
    self.b = torch.nn.Parameter(torch.Tensor(1).uniform_(-0.1, 0.1))
    def forward(self, x):
    return x @ self.w + self.b

    训练循环,反向传播和优化器

    现在我们已经实现了简单的TensorFlow和PyTorch模型,我们可以定义TF和PyTorch api来实现均方误差的损失函数,最后实例化我们的模型类并运行训练循环。

    同样,本着眼于自动差异/自动渐变功能核心的目的,我们将使用TF和PyTorch特定的自动差异实现方式实现自定义训练循环,以便为我们的简单线性函数提供渐变并手动优化权重和偏差参数以及临时和朴素的渐变后代优化器。

    在TensorFlow训练循环中,我们将特别明确地使用GradientTape API来记录模型的正向执行和损失计算,然后从该GradientTape中获得用于优化权重和偏差参数的梯度。

    相反,在这种情况下,PyTorch提供了一种更“神奇”的自动渐变方法,隐式捕获了对参数张量的任何操作,并为我们提供了相同的梯度以用于优化权重和偏置参数,而无需使用任何特定的api。

    一旦我们有了权重和偏差梯度,就可以在PyTorch和TensorFlow上实现我们的自定义梯度派生方法,就像将权重和偏差参数减去这些梯度乘以恒定的学习率一样简单。

    此处的最后一个微小区别是,当PyTorch在向后传播中更新权重和偏差参数时,以更隐蔽和“魔术”的方式实现自动差异/自动graf时,我们需要确保不要继续让PyTorch从最后一次更新操作中提取grad,这次明确调用no_grad api,最后将权重和bias参数的梯度归零。

    TensorFlow训练循环

    def squared_error(y_pred, y_true):
    return tf.reduce_mean(tf.square(y_pred - y_true))
    tf_model = LinearRegressionKeras()
    [w, b] = tf_model.trainable_variables
    for epoch in range(epochs):
    with tf.GradientTape() as tape:
    predictions = tf_model(x)
    loss = squared_error(predictions, y)
    w_grad, b_grad = tape.gradient(loss, tf_model.trainable_variables)
    w.assign(w - w_grad * learning_rate)
    b.assign(b - b_grad * learning_rate)
    if epoch % 20 == 0:
    print(f"Epoch {epoch} : Loss {loss.numpy()}")

    PyTorch训练循环

    def squared_error(y_pred, y_true):
    return torch.mean(torch.square(y_pred - y_true))
    torch_model = LinearRegressionPyTorch()
    [w, b] = torch_model.parameters()
    for epoch in range(epochs):
    y_pred = torch_model(inputs)
    loss = squared_error(y_pred, labels)
    loss.backward()
    with torch.no_grad():
    w -= w.grad * learning_rate
    b -= b.grad * learning_rate
    w.grad.zero_()
    b.grad.zero_()
    if epoch % 20 == 0:
    print(f"Epoch {epoch} : Loss {loss.data}")

    结论

    正如我们所看到的,TensorFlow和PyTorch自动区分和动态子分类API非常相似,当然,两种模型的训练也给我们非常相似的结果。

    在下面的代码片段中,我们将分别使用Tensorflow和PyTorch trainable_variables和parameters方法来访问模型参数并绘制学习到的线性函数的图。

    绘制结果

    [w_tf, b_tf] = tf_model.trainable_variables
    [w_torch, b_torch] = torch_model.parameters()
    with torch.no_grad():
    plt.figure(figsize = (12,5))
    ax = plt.subplot(111)
    ax.scatter(x, y, c = "b", label="samples")
    ax.plot(x, w_tf * x + b_tf, "r", 5.0, "tensorflow")
    ax.plot(x, w_torch * inputs + b_torch, "c", 5.0, "pytorch")
    ax.legend()
    plt.xlabel("x1")
    plt.ylabel("y",rotation = 0)

    75e862eff7564ccb5453c3830cf5e98e.png

    作者:Jacopo Mangiavacchi

    本文代码:https://github.com/JacopoMangiavacchi/TF-VS-PyTorch

    deephub翻译组

    展开全文
  • 在VB.Net中, 如何Picture控件上显示Lable的透明字体
  • 今天碰到一段string在label中能正常换行,但是在textbox中却无法换行的问题。首先考虑是换行符的问题。在网上查了些资料:1、TextBox 中换行符为: "\r\n"。2、Windows 中的换行符(即:Environment.NewLine) 为 "\r\...

    今天碰到一段string在label中能正常换行,但是在textbox中却无法换行的问题。

    首先考虑是换行符的问题。在网上查了些资料:

    1、TextBox 中换行符为: "\r\n"。

    2、Windows 中的换行符(即:Environment.NewLine) 为 "\r\n"

    3、MessageBox.Show() 的换行符为 "\n"

    4、Console 的换行符为 "\n"

    5、换行符还因平台而已,Unix/Linux 平台换行符是 "\n"。

    6、为保持平台的通用性,最好用 Environment.NewLine。

    由于我用的是vb.net,语法与c#不同,有如下对应关系:

    C#         VB.NET

    换行符       \n             vbLf

    回车符       \r              vbCr

    回车符+ 换行符        \r\n          vbCr+vbLf

    经测试, windows下:

    1 如果只有换行符或只有回车符,label中能显示换行,而textbox则不行

    2 如果同时有换行符和回车符,label和textbox都能正常换行

    这个2个结果在C#及VB.NET中都是一样的

    展开全文
  • 下面我就说一下VB中的换行问题现在我们将换行的环境分为三种:窗体输出,文本框(Text)输出,标签(Label)输出一、窗体输出中换一行:Chr(13) 、Chr(10) 、 Chr(13)+Chr(10)换两行:Chr(10)+Chr(13)、两个Chr(13)、...

    有时候我们需要显示多行数据,使其更有逻辑性。下面我就说一下VB中的换行问题

    现在我们将换行的环境分为三种:窗体输出,文本框(Text)输出,标签(Label)输出

    一、在窗体输出中

    换一行:Chr(13) 、Chr(10) 、 Chr(13)+Chr(10)

    换两行:Chr(10)+Chr(13)、两个Chr(13)、两个Chr(10)

    二、在文本框输出中

    换一行:Chr(13)+Chr(10),其他没有了

    换两行:没有,除非第二行为空,即“”

    三、在标签输出中

    换一行:Chr(10),Chr(13),以及所有的组合,都可以换一行,也都只能换一行

    换两行:没有,除非第二行为空,即“”

    下面我们来举个例子:

    Private Sub Command1_Click()

    '在窗体上换行

    Print "我" & Chr(10) & _

    "是" & Chr(13) & _

    "十" & Chr(13) & Chr(10) & _

    "期" & Chr(10) & Chr(13) & _

    "崔" & vbNewLine & _

    "晓" & vbCrLf & _

    "光"

    '在文本框中换行

    Text1.Text = "我" & Chr(10) & _

    "是" & Chr(13) & _

    "十" & Chr(13) & Chr(10) & _

    "期" & Chr(10) & Chr(13) & _

    "崔" & vbNewLine & _

    "晓" & vbCrLf & "" & vbCrLf & _

    "光"

    '在标签中换行

    Label1.ForeColor = vbRed

    Label1.Caption = "我" & Chr(10) & _

    "是" & Chr(13) & _

    "十" & Chr(13) & Chr(10) & _

    "期" & Chr(10) & Chr(13) & _

    "崔" & vbNewLine & _

    "晓" & vbCrLf & "" & vbCrLf & _

    "光"

    End Sub

    其运行的效果图为

    在VB中Chr(10)和Chr(13)还有如下表示,他们的用法一样,这里就不再重复了

    展开全文
  • VB的程序代码是允许换行书写的,只要每次换行的最后一个字符加上换行字符“_”就可以了。例如:Sub PicMove()Frm.Picture2.Left = Frm.Picture1.Left + _ ’加上换行符Frm.Picture1.WidthEnd Sub2、 如何设计的...
  • vb 如何Text文本框或Label里显示一个字符后自动换行
  • 在vb中添加网页超链接(源码)创建一个Label以下为Label的源代码:Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal ...
  • 今天碰到一段string在label中能正常换行,但是在textbox中却无法换行的问题。 首先考虑是换行符的问题。在网上查了些资料: 1、TextBox 中换行符为: "\r\n"。 2、Windows 中的换行符(即:Environment....
  • vb.net 如何让label中的文字旋转90°显示 C#也是类似的做法(如果需要C#的例子,请ask.csdn,net提问) https://ask.csdn.net/questions/757416
  • 前面的文章中,提到过在vb.net中实现picturebox中图片拖动,以及控件数组方面的东西。因为项目需要,我要实现的是,图片上有各个站点的名称,我要实现点击相应的名称,进入站点,查看相应的信息。我采取的是图片...
  • 下图是一个VB.NET窗体应用程序,程序中有一个设置了背景色、Dock为Fill的PictureBox,和一个它上面的Label。这里面的Label,虽然BackColor被设置成了Transparent,但仍会遮住后面一片矩形区域的背景: 为了解决...
  • Wince下透明Label的实现(vb.net)

    千次阅读 2010-08-05 21:45:00
    WinCE下实现透明Label,搞了半天,终于网上找到正解,还是很不容易的,现在把解决方案理一下。 步骤如下: (0)建个空工程 (1)拖个PictureBox控件进来,名称为PictureBox1; (2)...
  • VB中的ComboBox组合框(ComboBox)作为VB编程中选择性控件的重要组成部分,其在VB实际项目中有着非常广的应用。但是,好多朋友却对它的使用不太熟练,所以今天专门整理编写一下。组合框属性属性说明Name组合框控件的...
  • 之前写了一篇WINCE背景图上透明Label显示的解决方法,实际上就是背景图片上将字体“画”上去,去除掉了标准控件不透明的丑恶面容。 随着项目的进一步开发,发现当背景图片上很多的情况下,改变某一个Label的内容...
  • 版权声明:本文为博主原创文章,转载请显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 当初vb出来的时候,大家眼睛一亮,编程也可以可视化,当然,少不了控件的帮忙,虽然更多强大的功能还是...
  • 在VB中调用API函数

    2020-10-13 09:53:58
    在VB中调用API函数 ...2、控件工具条中拖放一个Label,将其属性名改为“修改系统时间”;拖放一个Frame,将其左上角的“Frame1”改为“修改时间”;依次拖放3个TextBox,将其Text设为空(即删掉Text1,Text2,Tex
  • vb

    2012-05-29 13:38:09
    首先添加一个LABEL控件 ,实行窗口中设置把label1去掉,然后再添加一个文本框,同上去掉TEXT1, 然后再添加两个命令按钮 command1 command2,然后双击弹出代码窗口,进行编辑  Private Sub Command1_C
  • VB在程序运行时智能增减控件,点击鼠标左键增加控件;点击鼠标右键删除控件,控制将被添加到窗体单击的位置,其中可供自动添加的控件有:command控件、text控件、label控件三种。程序的可视化界面做的挺实用。
  • 如何用VB在窗体中实现闪烁文字

    千次阅读 2013-08-26 18:12:32
    通过使用VB数据库编程的Timer控件,程序员可以轻松的窗体上实现闪烁文字的效果。本文将演示如何为Label控件加上闪烁效果,这种方法同样适用于其它多种控件。  当你窗体上加入Timer控件时,它只出现设计时,而...
  • 如何在VB控件上添加超链接

    千次阅读 2018-03-30 21:05:59
    那么,如何在VB控件上添加超链接呢?答案,请往下找~ 第一步:建立一个Label,输入自己想链接的文字 第二步:代码 (1)通用中输入 Private Declare Function ShellExecute Lib "shell32.dll" Alias ...
  • VB作业

    2016-03-24 17:28:41
    2双击屏幕左端的commandbutton,然后双击左侧label出现的窗口的右侧中的caption变成‘红’。再双击label,同理,变成“白”。然后右侧窗中的forecolor中改变颜色。 3 Private Sub Command1_Click() Dim a ...
  • vb如何实现换行换行符怎么使用?有两种方法:1。编写代码实现换行:label1.caption=“第一行内容”&vbcrlf&“第二行内容”“vbcrlf是实现换行的回车...在VB中,当代码行太长时,语句可能会中断。规则是...
  • 大家都知道Label、Texe等控件等如果单行文本太长的 话会无法正常显示,因此制作滚动字幕是比较麻烦。 此控件解决了这个问题。该控件占窗体界面较小, 显示内容可自由更改,较上个版本增加了很多功能如: 可加...
  • 程序预期的运行效果是窗体被打开后,(rec-2)个label控件会按照计算好的位置依次排列,每个label控件会显示程序外接文档里一行的内容。 外接文档第一行和第二行都是整数数字。 但是这个窗体打开后,lblname(n)...
  • 使用VB 6.0中文企业版时,删除某些控件时会出错,VB直接闪退。删除label、textbox等控件时会闪退,而删除按钮等其它控件时不会出错,这是为什么?怎么解决? 求帮忙,急!!! ...
  • 如何在vb控件上添加超链接

    千次阅读 2012-05-03 20:09:51
    作品展一点点进行,遇到的问题就越来越...建立一个label,输入文字,文字可以简单修改为下划线和蓝颜色,然后双击进入代码编辑窗口, 通用中输入PrivateDeclare Function ShellExecute Lib "shell32.dll" Alias"She
  • 图1一、快捷键VB代码提示快捷键ctrl+j二、labellabel文本标签,文本内容Caption中三、符号含义等于号=有两个意思:1.赋值。就是设置。2.判断。用于if语句的逻辑判断。四、数据类型VB中的数据类型常用...
  • 下面我就说一下VB中的换行问题现在我们将换行的环境分为三种:窗体输出,文本框(Text)输出,标签(Label)输出一、窗体输出中换一行:Chr(13) 、Chr(10) 、 Chr(13)+Chr(10)换两行:Chr(10)+Chr(13)、两个Chr(13)、...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 304
精华内容 121
关键字:

vb在label