首页 > 编程 > .NET > 正文

Vb.Net问题集 (转贴于此)

2024-07-10 13:02:31
字体:
来源:转载
供稿:网友
  • 网站运营seo文章大全
  • 提供全面的站长运营经验及seo技术!
  •   
    作者:hejianzhong  

    我来谈一个自已不太懂的东西实在是不明智的,实在是没有人来谈,一个人默默的钻研总是很难有所成就的。在网上打入一个vb6的命题,会找到无数的解决方案。.vb7外国已经出了好几本很好的书,在国内总有些人不屑这个beta版。这篇拙作也只算一个”beta”,”bug”肯定不少,看了别生气,且作铺路石,且作铺路石。

    一.vb7中调用不共享的方法,函数:

    这个问题我在论坛发了好几天帖子,没人愿意回答。只好求助一些英文的例程。

    有了结果,这个实在是很简单。对于vb7也相当重要。因为在vb7中包括了几乎

    所有api,甚至于更强大的功能。有一些是可以很简单的调用,如:

    1,  设置窗体的透明:form1.opacity = 0.89(可以设置为0.xx,opacity的意思是不透明程度)

    2,  展开region " windows form designer generated code "前面的+号你可以看到:

              me.text = "form1" ‘设置窗体的标题(vb7中以text代替caption)

    me.newform2.location = new system.drawing.point (6, 14) ‘

    设置窗体的位置坐标。

    me.borderstyle = system.winforms.formborderstyle.none

    设置窗体的外观状态

                me.backgroundimage = ctype(resources.getobject("$this.backgroundimage"), system.drawing.image)。设置背景图片

    me.showintaskbar = false

    设置是否出现在任务栏

    me.clientsize = new system.drawing.size(536, 408)

    设置窗体尺寸。

    vb不提倡直接一修改region " windows form designer generated code ",

    你应该在属性框调节它们,但是利用这个原理,我们可以在load事件中加入一些

    代码。

    例如:dim fhwnd1=integer:( “:”是分行的作用) dim f1 as system.winforms.form

         然后定义f1的形状,

          取得句柄,fhwnd1=f1.handle

          同理取得名柄fhwnd2

          拼合两个窗体,很容易一生成不规则窗体

          当然winforms类的方法绝对不止这些,这只是最简单的了。

    3:获取一个图片的信息:form1.backgroundimage.width(图片的宽度)

    form1.backgroundimage.height(图片的高度)

    4.操作一个文件:dim filesam as system.io.file = new system.io.file ("sam.txt")

    filesam.delete,删除文件

                 filesam.copy()

                 filesam.copyto()

                 filesam.create()

                 filesam.createtext()

    等等。这些只要看一下大概就知道是什么作用了,不再需要input,output了

    所以我建议不要使用namespace(族名,或译为名称空间,这里的空间实际上是一个类的组合。所以我称为族名),这样打入一个族名,打点,他的子类就会以提示方式列出。

    在c#中使用using namespace vb中使用imports namespace作用是一样的。

    现在的问题是有一些很重要的方法不会出现在子类的提示列表中(查一下class members)。这表示他是不共享的。

    首先你应该在工程中调用他,而不要在模块中,要建立一个函数过程。要声明一个新的对象,而不要直接地使用,如:

    public function getpixel(byval x as integer, byval y as integer) as system.drawing.color

                dim bm as system.drawing.bitmap ,声明一个对象

                bm = form1.backgroundimage(backgroundimage等同于vb6中的picture)

    getpixel = bm.getpixel(x, y)

    注意这里没有使用return关键字返回值,是基于例程的用法。

    end function

    (有没有发现vb7的基本语法变化并不是很大,不象人们传说的可怕)

    (windowsme因为改变太小而被人骂,vb7又因为改变太大被人骂,实在令人感慨)

    然后: private sub form_load()

                

                call setrgn                                 

                dim strtemp as string

                dim pixcolor as system.drawing.color

                pixcolor = getpixel(1, 1)

                strtemp = pixcolor.tostring

                stop ‘在中断的一方,移动鼠标停在strtemp变量上,可以看到返回了一个像素的rgb

    end sub

    二.窗体之间的数据传输,

    有时候我们想按下form1的button,改变form2的textbox.text。这在vb6中是很简单的,在写成form2.textbox.text=”xxxxx”的就行了,在vb7中却不能这样使用,这样有些麻烦,但却有利于封装性的产生。在大型的软件工程中,不至于因为类的相互紧密作用,导致调试的困难。例如一个窗体无法unload,我们无法确定是哪一个类的引用不当造成。

    你可以写一个接口过程就象大部分丛vb6升级到vb7的软件那样。如:

    private shared  m_vb6formdefinstance as form1

             public shared  property definstance() as form1

                  get

                       if m_vb6formdefinstance is nothing then

                           m_vb6formdefinstance = new form1()

                       end if

                       definstance = m_vb6formdefinstance

                  end get

                  set

                       m_vb6formdefinstance = value

                  end set

             end property

    这样在form2中你可以写form1.definstance.xxxx调用属性。这大概算是一种兼容的方法

    实际上你应该这样写

    在class form1中: inherits system.winforms.form 一行的后面public fm as new form2

    然后你可以象在vb6中一样,使用fm.visible=true载入窗体并在form1中控制他。

    但是你却不能这样在form2中控制form1我想vb7是将form1作为默认的主窗体

    应该在form2中这样写:public fmm as system.winforms.form=form1 虽然vb7声称这样写等同于public fmm as form1 但这样你会不成功。因为fmm的值为null,如果使用 new form1那你会看到每调用一次会出现一个新的form1!!

    发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表