精华内容
下载资源
问答
  • access窗体设计:创建窗体

    万次阅读 2014-03-20 19:42:05
    如果要将子窗体链接到主窗体,执行该过程前应确保已与基础记录源建立关联。 当窗体显示在数据透视表视图或数据透视图视图中时,不能向其中添加子窗体。 同时创建窗体与子窗体 在“数据库”窗口中,单击...

    如果要将子窗体链接到主窗体,执行该过程前应确保已与基础记录源建立关联。

    当窗体显示在数据透视表视图或数据透视图视图中时,不能向其中添加子窗体。

    隐藏同时创建窗体与子窗体

    1. “数据库”窗口中,单击“对象”下的“窗体”按钮图像 。
    2. 单击“数据库”窗口工具栏上的“新建”按钮。
    3. 在“新建窗体”对话框中,单击“窗体向导”。

    隐藏如果向导未启动

    这可能是因为 Access 正运行于沙盒模式,但您的计算机上尚未安装 Microsoft Jet 4.0 SP8 或更高版本。启用沙盒模式后,必须安装有 Jet 4.0 SP8 或更高版本,Access 才能完全发挥作用。有关安装 Jet 升级的详细信息,请参阅 Office Online 文章关于 Microsoft Jet 4.0 SP8 或更高版本。有关沙盒模式的详细信息,请参阅 Office Online 文章关于Microsoft Jet Expression Service 沙盒模式

    1. 在第一个向导对话框中,从列表中选择表或查询。例如,若要创建显示子窗体中每一类别产品的“类别”窗体,请选定“类别”表(位于一对多关系的“一”方)。

     注释   先选定哪个表或查询都可以。

    1. 双击要从该表或查询中包括的字段。
    2. 在同一向导对话框中,从列表中选择另一个表或查询。如果还要用同一示例,则选择“产品”表(位于一对多关系的“多”方)。
    3. 双击要从该表或查询中包括的字段。
    4. 如果在启动向导之前已正确设置了关系,则单击“下一步”时,向导会询问以哪一个表或查询来查看。如果还要用同一示例来创建“类别”窗体,则单击“按类别”。
    5. 在同一向导对话框中,选中“带有子窗体的窗体”选项。
    6. 按照其余向导对话框中的指示进行操作。单击“完成”后,Microsoft Access 将同时创建两个窗体,一个是主窗体子窗体控件,另一个则是子窗体。

    隐藏创建子窗体并将其添加到另一个窗体中

    1. “设计”视图中打开要向其中添加子窗体的窗体。
    2. 确保已按下了工具箱中的“控件向导”工具 按钮图像 。
    3. 单击工具箱中的“子窗体/子报表”工具 按钮图像 。
    4. 在窗体上单击要放置子窗体的位置。
    5. 根据向导对话框中的指导完成各步骤。

    隐藏如果向导未启动

    这可能是因为 Access 正运行于沙盒模式,但您的计算机上尚未安装 Microsoft Jet 4.0 SP8 或更高版本。启用沙盒模式后,必须安装有 Jet 4.0 SP8 或更高版本,Access 才能完全发挥作用。有关安装 Jet 升级的详细信息,请参阅 Office Online 文章关于 Microsoft Jet 4.0 SP8 或更高版本。有关沙盒模式的详细信息,请参阅 Office Online 文章关于Microsoft Jet Expression Service 沙盒模式

    1. 单击“完成”后,Microsoft Access 将在窗体中添加一个子窗体控件,并为子窗体创建一个单独的窗体。

    隐藏将窗体添加到另一个窗体中以创建带有子窗体的窗体

    1. “设计”视图中,打开要用作主窗体的窗体。主窗体通常是基于一对多关系中“一”方的表或查询的窗体。
    2. 确保已按下了工具箱中的“控件向导”工具 图像按钮 。
    3. 按 F11 切换到“数据库”窗口
    4. 从“数据库”窗口中将相应的窗体、表或查询拖到主窗体。

    隐藏创建带有两个子窗体的窗体 

    主窗体与第一个子窗体有一对多关系,第一个子窗体又与第二个子窗体有一对多关系,主窗体中含有两个子窗体控件

    1. “数据库”窗口中,单击“对象”下的“窗体”按钮图像 。
    2. 单击“数据库”窗口工具栏上的“新建”。
    3. 在“新建窗体”对话框中,双击列表中的“窗体向导”。

    隐藏如果向导未启动

    这可能是因为 Access 正运行于沙盒模式,但您的计算机上尚未安装 Microsoft Jet 4.0 SP8 或更高版本。启用沙盒模式后,必须安装有 Jet 4.0 SP8 或更高版本,Access 才能完全发挥作用。有关安装 Jet 升级的详细信息,请参阅 Office Online 文章关于 Microsoft Jet 4.0 SP8 或更高版本。有关沙盒模式的详细信息,请参阅 Office Online 文章关于Microsoft Jet Expression Service 沙盒模式

    1. 在第一个向导对话框中,选择用于主窗体的表或查询。例如,假定要创建带有两个子窗体的“客户”窗体,其中一个子窗体为“订单”子窗体,另一个为“订单明细”子窗体,此时请选择“客户”表(第一个一对多关系中的“一”方)。

     注释   无论先选定哪个表或查询都可以。

    1. 双击要从该表或查询中包括的字段。
    2. 在同一个向导对话框中,选择用于第一个子窗体的表或查询。使用同一示例,请选择“订单”表(第一个一对多关系中的“多”方),然后双击要从该表或查询中包括的字段。
    3. 在同一个向导对话框中,选择用于第二个子窗体的表或查询。使用同一示例,请选择“订单明细”表(在第二个一对多关系中的“多”方),然后双击要从该表或查询中包括的字段。
    4. 如果在启动向导前已经正确设置了表的关系,则单击“下一步”后,向导会询问要按哪个表或查询来查看。使用同一示例,要创建“客户”窗体,请单击“按客户”选项。
    5. 在同一向导对话框中,选中“带有子窗体的窗体”选项。
    6. 按照其他向导对话框的指导进行操作。单击“完成”后,Microsoft Access 将创建一个带有两个子窗体控件的主窗体,还将创建另外两个窗体,每个子窗体各一个。

     注释 

    • 用向导创建带有两个子窗体的窗体时,Microsoft Access 将通过给第一个子窗体的“当前”属性附加一个事件过程来同步子窗体。如果要同步同一窗体上更多的子窗体,可以复制和修改这个事件过程。若要查看这个事件过程,请在“设计”视图中打开第一个子窗体,双击窗体选择器,然后单击“当前”属性旁边的“生成”按钮 按钮图像 。
    • “罗斯文”示例数据库中“客户订单”窗体就是一个带有两个子窗体的窗体。若要查看该窗体,请指向“帮助”菜单上的“示例数据库”,单击“‘罗斯文’示例数据库”或“‘罗斯文’示例 Access 项目”,然后在“设计”视图中打开“客户订单”窗体。 

    隐藏创建带有内嵌子窗体的窗体

    主窗体与第一个子窗体有一对多关系,第一个子窗体又与第二个子窗体有一对多关系,第二个子窗体内嵌在第一个子窗体中。

    1. 创建一个带有子窗体的窗体。

    隐藏操作方法:

    1. “数据库”窗口中,单击“对象”下的“窗体”按钮图像 。
    2. 单击“数据库”窗口工具栏上的“新建”按钮。
    3. 在“新建窗体”对话框中,单击“窗体向导”。

    隐藏如果向导未启动

    这可能是因为 Access 正运行于沙盒模式,但您的计算机上尚未安装 Microsoft Jet 4.0 SP8 或更高版本。启用沙盒模式后,必须安装有 Jet 4.0 SP8 或更高版本,Access 才能完全发挥作用。有关安装 Jet 升级的详细信息,请参阅 Office Online 文章关于 Microsoft Jet 4.0 SP8 或更高版本。有关沙盒模式的详细信息,请参阅 Office Online 文章关于 Microsoft Jet Expression Service 沙盒模式

    1. 在第一个向导对话框中,从列表中选择表或查询。例如,若要创建显示子窗体中每一类别产品的“类别”窗体,请选定“类别”表(位于一对多关系的“一”方)。

     注释   先选定哪个表或查询都可以。

    1. 双击要从该表或查询中包括的字段。
    2. 在同一向导对话框中,从列表中选择另一个表或查询。如果还要用同一示例,则选择“产品”表(位于一对多关系的“多”方)。
    3. 双击要从该表或查询中包括的字段。
    4. 如果在启动向导之前已正确设置了关系,则单击“下一步”时,向导会询问以哪一个表或查询来查看。如果还要用同一示例来创建“类别”窗体,则单击“按类别”。
    5. 在同一向导对话框中,选中“带有子窗体的窗体”选项。
    6. 按照其余向导对话框中的指示进行操作。单击“完成”后,Microsoft Access 将同时创建两个窗体,一个是主窗体子窗体控件,另一个则是子窗体。

     注释   当向导询问子窗体需要何种版式时,必须选择“表格”(等效于“窗体”视图)。

    1. 在主窗体的“设计”视图中,选择子窗体控件并再次单击控件的内部以选择窗体,就像从“数据库”窗口的“设计”视图中打开子窗体一样。
    2. 执行下列操作之一:
    • 重复第 1 步以通过向导创建第二个子窗体。
    • 将窗体、表或查询从“数据库”窗口中拖到子窗体中。Microsoft Access 将在第一个子窗体内再创建另一个子窗体,并创建子窗体的窗体。
    展开全文
  • 创建测试窗体(转)

    2019-06-24 07:42:05
    创建测试窗体: 对Visual C++程序员来说,在DBMS内创建窗体有两个重要的原因。第一,可以在产品类型的环境中再测试一次查询,这个环境和你在Visual C++下测试的环境是一样的。第二,测试窗体允许你不必创建特殊的...
    创建测试窗体: 对Visual C++程序员来说,在DBMS内创建窗体有两个重要的原因。第一,可以在产品类型的环境中再测试一次查询,这个环境和你在Visual C++下测试的环境是一样的。第二,测试窗体允许你不必创建特殊的应用程序即能查看数据。无论是程序代码、已创建的查询、数据本身或者DBMS的故障导致了VisualC++程序出现错误,你都可以很方便地把错误找出来。
    要让窗体完成查询任务,无须把它做得过于复杂。真正需要显示的字段是想在用户应用程序中看到的哪些字段。记住了这一点后,我们用下面的过程为示例数据库创建一个测试窗体。
    1. 单击Database(数据库)对话框的Forms(窗体)选项卡。
    0652312063643981.JPG
    2. 单击New(新建),会看到如下图所示的New Form(新窗体)对话框。
    3. 加亮Form Wizard(窗体向导),在下拉列表框中选择FoodOrders查询,然后单击OK,会看到如下图所示的Form Wizard(窗体向导)对话框。仔细看一看字段列表。验证一下Form Wizard(窗体向导)是否从查询中挑选了你所期望的全部字段,这一点也很重要。
    0652312063863132.JPG
    4. 加亮Orders.Food_ID字段,然后单击右箭头按钮(>),会看到该字段被添加到Selected Fields(已选定字段)列表中。
    5. 单击双箭头按钮(>>),把剩下的字段添加到Selected Fields(已选定的字段)列表中。由于我们并不需要Foods.Food_ID字段,所以加亮该字段,然后选择左箭头按钮( 6. 由于我们对窗体的美学特性还不感兴趣,所以单击Finish(完成)。你会看到数据的单记录视图,如下图所示。你应该再次看一看字段列表,确认所需字段都已经出现在窗体上。应该做的第二件事是,验证所选字段的标题都正确无误。最后,验证屏幕上显示的数据是否正确。
    0652312064054607.JPG
    现在我们已经有了测试窗体,你也可以试着用窗体添加新记录、删除记录和查找特定的信息,等等。在Visual C++应用程序使用数据库之前,在实际窗体上进行上述类型的测试,可以帮助你验证是否一切以正常的方式运行
    编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
    上一篇:使用查询排序数据
    下一篇:使用ODBC建立数据库应用程序
    转载请注明来源:www.iyit.net
    特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
     相关文章

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-123267/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/10294527/viewspace-123267/

    展开全文
  • 在 Power Apps 中编辑窗体和显示窗体控件 目录 在 Power Apps 中编辑窗体和显示窗体控件 ...如果添加“编辑窗体”控件,则用户可以编辑相应字段、创建记录,以及将所做的更改保存到数据。 如果添加库控..

    在 Power Apps 中编辑窗体和显示窗体控件

    •  
    • 目录

      在 Power Apps 中编辑窗体和显示窗体控件

      描述

      选择记录

      创建记录

      保存更改

      实操记录&问题

      成功案例

      失败案例【待解决 在线等】


    • 在数据源中显示、编辑和创建记录。

      描述

      如果添加“显示窗体”控件,则用户可以显示某个记录的所有字段,或者只显示你指定的字段。 如果添加“编辑窗体”控件,则用户可以编辑相应字段、创建记录,以及将所做的更改保存到数据源。

      窗体和窗体视图控件示例

      如果添加控件,则可对其进行配置,以便显示数据源中的表,然后再配置窗体,以便显示用户在库中选择的具体记录。 也可添加一个或多个按钮控件,以便用户选择其来保存编辑内容、取消编辑内容以及创建记录。 将控件用在一起即可创建完整的解决方案

      选择记录

      不管哪一类型的窗体,均可将其“DataSource”属性设置为一个记录表,并可将窗体的“Item”属性设置为显示该表中的特定记录。 例如,可将窗体的“Item”属性设置为控件的“SelectedItem”属性。 当用户选择库中的某个记录时,同样的记录就会显示在窗体中,只不过该窗体可以显示更多字段。 如果用户返回到库,然后选择另一记录,则库的“SelectedItem”属性会更改。 该更改会更新窗体的“Item”属性,然后窗体就会显示新选择的记录。

      此外,你还可以使用下拉控件设置窗体的“Item”属性,如显示、编辑或添加记录中所述,或者添加 Lookup 或 First 等函数。 例如,可以将Item属性设置为这些公式中的任意一个,以在 Common Data Service 的 "帐户" 实体中显示 Fabrikam 条目:

      First(Accounts)

      Lookup(Accounts, "Fabrikam" in name)

      每个窗体控件包含一个或多个卡片控件。 设置卡片的 DataField 属性即可指定该卡显示的字段以及其他详细信息

      创建记录

      当“编辑窗体”控件处于“编辑”模式时,用户可以更新在窗体的“Item”属性中指定的记录。 “Mode”属性在被查看时会返回“编辑”。

      但是,当“编辑窗体”控件处于“新建”模式时,将会忽略“Item”属性。 窗体不显示现有记录,而是显示数据源的默认值。每个字段中的值都是为窗体配置的默认值。 NewForm 函数可以让窗体切换到该模式。

      例如,可以将按钮的 Text 属性设置为显示“新建”,将其 OnSelect 属性设置为一个公式,其中包括 NewForm 函数。 如果用户选择该按钮,则窗体会切换到“新建”模式,这样用户就可以创建以已知值开头的记录。

      如果 ResetForm 函数或 SubmitForm 函数成功运行,窗体会切换回“编辑”模式。

      • 可以将按钮的 Text 属性设置为显示“取消”,将其 OnSelect 属性设置为一个公式,其中包括 ResetForm 函数。 如果用户选择该按钮,则会丢弃任何正在进行的更改,窗体中的值再次显示为数据源的默认值。
      • 可以将按钮的 Text 属性设置为显示“保存更改”,将其 OnSelect 属性设置为一个公式,其中包括 SubmitForm 函数。 如果用户选择该按钮并更新数据源,窗体中的值会重置为数据源的默认值。

      保存更改

      如果按前一部分所述创建“保存更改”按钮,用户可以创建或更新一个记录,然后选择该按钮将所做的更改保存到数据源。 也可通过配置图像控件或某个其他的控件来执行相同的任务,只要使用 SubmitForm 函数配置该控件即可。 在任何情况下,“Error”、“ErrorKind”、“OnSuccess”和“OnFailure”属性都会提供对结果的反馈。

      当 SubmitForm 函数运行时,会首先验证用户要提交的数据。 如果必填字段不包含某个值,或者另一个值不符合某个其他的约束条件,则会设置“ErrorKind”属性,同时会运行“OnFailure”公式。 可以将“保存更改”按钮或其他控件配置为仅当数据有效时(即仅当窗体的“Valid”属性为“true”时)才允许用户选择它。 请注意,若要重置“Error”和“ErrorKind”属性,用户不仅必须纠正问题,而且必须再次选择“保存更改”按钮(或者如此前所述,选择“取消”按钮丢弃所做的更改)。

      如果数据通过验证,SubmitForm 会将其发送到数据源,这可能需要一段时间,具体取决于网络延迟情况。

      • 如果提交成功,则会清除“Error”属性并将“ErrorKind”属性设置为“ErrorKind.None”,同时会运行“OnSuccess”公式。 如果用户创建了某个记录(即窗体以前为“新建”模式),则窗体会切换到“编辑”模式,以便用户能够编辑新创建的记录或其他记录。
      • 如果提交失败,则“Error”属性会包含数据源提供的用户友好型错误消息,对问题进行说明。 “ErrorKind”属性会根据问题进行相应的设置,同时会运行“OnFailure”公式。

      当两名人员尝试同时更新同一记录时,某些数据源可以检测到这种情况,并将 ErrorKind 设置为 ErrorKind.Conflict,同时会采取补救措施,使用一个用户所做的更改刷新数据源,并重新应用该用户的更改。

    • 实操记录&问题

    • 2020年5月20日:使用SQL server链接,
    • 成功案例

    • 其中一个表自动生成了3个页面,包含一个编辑表单,功能正常:
    •  
    • 失败案例【待解决 在线等】

    • 另一个表,自动生成了2个窗体页面。但是只能查看。检查之后插入了一页新的,虽然选择插入的是编辑窗体,但是在设置字段的相应的控件的时候,并没有出现编辑文本选项,只出现了查看文本,不知道是什么原因?有没有大佬知道的回复一下,谢谢。

    展开全文
  • C#创建不规则窗体

    2013-05-25 21:25:49
    现在,C#创建不规则窗体不是一件难事,下面总结一下: 一、自定义窗体,一般为规则的图形,如圆、椭圆等。 做法:重写Form1_Paint事件(Form1是窗体的名字),最简单的一种情况如下: System.Drawing....

    现在,C#创建不规则窗体不是一件难事,下面总结一下:

    一、自定义窗体,一般为规则的图形,如圆、椭圆等。

    做法:重写Form1_Paint事件(Form1是窗体的名字),最简单的一种情况如下:

    System.Drawing.Drawing2D.GraphicsPath shape = new System.Drawing.Drawing2D.GraphicsPath();
    
        shape.AddEllipse(0,0,this.Height, this.Width);
    
        this.Region = new Region(shape);

    即重绘窗体的规则。

    二、利用背景图片实现

    1.       设置窗体的背景图片,其中背景图片是24位(不包括24)以下的位图(BMP图片),并且要设置TansparencyKey的值,一般为你背景图片的背景色,即创建不规则图片时的底色,一般设为你图片中没有的颜色。

    这种做法的不好的地方就是背景图片一定要16位或者更低的,而且还要确保客户端的显示。如果监视器的颜色深度设置大于 24 位,则不管 TransparencyKey 属性是如何设置的,窗体的非透明部分都会产生显示问题。若要避免出现这种问题,请确保“显示”控制面板中的监视器颜色深度的设置小于 24 位。当开发具有这种透明功能的应用程序时,请牢记应使您的用户意识到此问题。

    实现步骤如下:

    1. 新建windows application

    2. 选择窗体,找到BackgroundImage属性,点击打开新的窗口,选择下面的导入资源文件,选择你的不规则的BMP图片

    3. 找到窗体的TansparencyKey,将它设置为你背景图片的背景色(如黄色)

    4. 找到窗体的FormBorderStyle,将其设置为none,即不显示标题栏

    5. 运行

    2.       跟背景图片一样的图形,不过是动态加载,遍历位图以实现不规则窗体。它的原理是这样的,在Formload事件中写方法使得窗体的描绘区域发生改变。

    实现步骤如下:

    1. 建立winform应用程序

    2. 找到窗体的Load事件,双击进行编辑

    3. 编写方法,主要的代码如下:

        class BitmapRegion
        {
            public BitmapRegion()
            { }
    
    
            /// <summary> 
            /// Create and apply the region on the supplied control
            /// 创建支持位图区域的控件(目前有button和form)
            /// </summary> 
            /// <param name="control">The Control object to apply the region to控件</param> 
            /// <param name="bitmap">The Bitmap object to create the region from位图</param> 
            public static void CreateControlRegion(Control control, Bitmap bitmap)
            {
                // Return if control and bitmap are null
                //判断是否存在控件和位图
                if (control == null || bitmap == null)
                    return;
    
                // Set our control''s size to be the same as the bitmap
                //设置控件大小为位图大小
                control.Width = bitmap.Width;
                control.Height = bitmap.Height;
                // Check if we are dealing with Form here 
                //当控件是form时
                if (control is System.Windows.Forms.Form)
                {
                    // Cast to a Form object
                    //强制转换为FORM
                    Form form = (Form)control;
                    // Set our form''s size to be a little larger that the  bitmap just 
                    // in case the form''s border style is not set to none in the first place 
                    //当FORM的边界FormBorderStyle不为NONE时,应将FORM的大小设置成比位图大小稍大一点
                    form.Width = control.Width;
                    form.Height = control.Height;
                    // No border 
                    //没有边界
                    form.FormBorderStyle = FormBorderStyle.None;
                    // Set bitmap as the background image 
                    //将位图设置成窗体背景图片
                    form.BackgroundImage = bitmap;
                    // Calculate the graphics path based on the bitmap supplied 
                    //计算位图中不透明部分的边界
                    GraphicsPath graphicsPath = CalculateControlGraphicsPath(bitmap);
                    // Apply new region 
                    //应用新的区域
                    form.Region = new Region(graphicsPath);
                }
                // Check if we are dealing with Button here 
                //当控件是button时
                else if (control is System.Windows.Forms.Button)
                {
                    // Cast to a button object 
                    //强制转换为 button
                    Button button = (Button)control;
                    // Do not show button text 
                    //不显示button text
                    button.Text = "";
    
                    // Change cursor to hand when over button 
                    //改变 cursor的style
                    button.Cursor = Cursors.Hand;
                    // Set background image of button 
                    //设置button的背景图片
                    button.BackgroundImage = bitmap;
    
                    // Calculate the graphics path based on the bitmap supplied 
                    //计算位图中不透明部分的边界
                    GraphicsPath graphicsPath = CalculateControlGraphicsPath(bitmap);
                    // Apply new region 
                    //应用新的区域
                    button.Region = new Region(graphicsPath);
                }
            }
            /// <summary> 
            /// Calculate the graphics path that representing the figure in the bitmap 
            /// excluding the transparent color which is the top left pixel. 
            /// //计算位图中不透明部分的边界
            /// </summary> 
            /// <param name="bitmap">The Bitmap object to calculate our graphics path from</param> 
            /// <returns>Calculated graphics path</returns> 
            private static GraphicsPath CalculateControlGraphicsPath(Bitmap bitmap)
            {
                // Create GraphicsPath for our bitmap calculation 
                //创建 GraphicsPath
                GraphicsPath graphicsPath = new GraphicsPath();
                // Use the top left pixel as our transparent color 
                //使用左上角的一点的颜色作为我们透明色
                Color colorTransparent = bitmap.GetPixel(0, 0);
                // This is to store the column value where an opaque pixel is first found. 
                // This value will determine where we start scanning for trailing opaque pixels.
                //第一个找到点的X
                int colOpaquePixel = 0;
                // Go through all rows (Y axis) 
                // 偏历所有行(Y方向)
                for (int row = 0; row < bitmap.Height; row++)
                {
                    // Reset value 
                    //重设
                    colOpaquePixel = 0;
                    // Go through all columns (X axis) 
                    //偏历所有列(X方向)
                    for (int col = 0; col < bitmap.Width; col++)
                    {
                        // If this is an opaque pixel, mark it and search for anymore trailing behind 
                        //如果是不需要透明处理的点则标记,然后继续偏历
                        if (bitmap.GetPixel(col, row) != colorTransparent)
                        {
                            // Opaque pixel found, mark current position
                            //记录当前
                            colOpaquePixel = col;
                            // Create another variable to set the current pixel position 
                            //建立新变量来记录当前点
                            int colNext = col;
                            // Starting from current found opaque pixel, search for anymore opaque pixels 
                            // trailing behind, until a transparent   pixel is found or minimum width is reached 
                            ///从找到的不透明点开始,继续寻找不透明点,一直到找到或则达到图片宽度 
                            for (colNext = colOpaquePixel; colNext < bitmap.Width; colNext++)
                                if (bitmap.GetPixel(colNext, row) == colorTransparent)
                                    break;
                            // Form a rectangle for line of opaque   pixels found and add it to our graphics path 
                            //将不透明点加到graphics path
                            graphicsPath.AddRectangle(new Rectangle(colOpaquePixel, row, colNext - colOpaquePixel, 1));
                            // No need to scan the line of opaque pixels just found 
                            col = colNext;
                        }
                    }
                }
                // Return calculated graphics path 
                return graphicsPath;
            }
        }

    4. 运行

     

    三、调用类库实现

    主要就是根据一些坐标,然后根据这些坐标绘制窗体

    代码如下:

            public Form3()
    
            {
    
                InitializeComponent();
    
                //创建不规则窗体
    
                POINTAPI[] poin;
    
                poin = new POINTAPI[5];
    
                poin[0].x = 90;
    
                poin[0].y = 90;
    
                poin[1].x = this.Width;
    
                poin[1].y = 0;
    
                poin[2].x = Width;
    
                poin[2].y = this.Height / 2;
    
                poin[3].x = Width / 2;
    
                poin[3].y = Height / 2;
    
                poin[4].x = 0;
    
                poin[4].y = Width;
    
     
    
                Boolean flag = true;
    
                IntPtr hRgn = CreatePolygonRgn(ref poin[0], 8, 1);
    
                SetWindowRgn(this.Handle, hRgn, ref flag);
    
                this.BackColor = Color.BurlyWood;
    
            }
    
     
    
            [StructLayout(LayoutKind.Sequential)]
    
            private struct POINTAPI
    
            {
    
                internal int x;
    
                internal int y;
    
            }
    
     
    
            [DllImport("gdi32.dll")]
    
            private static extern IntPtr CreatePolygonRgn(ref POINTAPI lpPoint,int nCount,int nPolyFillMode);
    
     
    
            [DllImport("user32.dll")]
    
            private static extern IntPtr SetWindowRgn(IntPtr hWnd,IntPtr hRgn, ref Boolean bRedraw);
    
     
    
            //设置窗体显示状态
    
            [DllImport("user32.dll")]
    
            private static extern int SetWindowPos(IntPtr hwnd,int hWndInsertAfter,int x,int y,int cx,int cy,int wFlags);
    
     
    
            private void Start_Btn_Click(object sender, EventArgs e)
    
            {//始终显示在前面
    
     
    
                SetWindowPos(this.Handle, -1, 0, 0, 0, 0, 1);
    
            }
    
     
    
            private void button1_Click(object sender, EventArgs e)
    
            {
    
                //最小化始终显示在前面
    
                SetWindowPos(this.Handle, -1, 0, 0, 0, 0, 0);
    
     
    
            }

    当然,我们也可以自定义窗体的动作,如按着某个轨迹一定,下面的代码中的BackgroundForm程序中就小试了一下,效果还不错,下面是这些程序的效果图(有点乱)和代码:

    源代码下载


    原文地址:http://www.cnblogs.com/alexis/archive/2010/08/29/1811826.html

    展开全文
  • 用C#创建可拖动窗体

    2009-05-07 16:58:00
    最主要的,这些介绍大多是大片大片的代码,很少讲解;初学者学期来恐怕要费些力气(我在学习这个技巧的时候就很痛苦)。在这里,我对这个技巧进行了一个详细的讲解,相信各位初学者朋友可以学会如何制作可拖动窗体...
  • Microsoft Access 窗体

    2020-03-06 11:57:20
    记录源:在窗体属性中设置->数据源,即窗体所要显示,控制的表格 窗体五个 窗体页眉 页面页眉(不常用) 主体 页面页脚(不常用) 窗体页脚 控件 控件要显示数据,可在控件属性->空间来源下拉选择字段,或者加等号(=)...
  • 用C#创建可拖动窗体

    千次阅读 2004-11-12 14:33:00
    最主要的,这些介绍大多是大片大片的代码,很少讲解;初学者学期来恐怕要费些力气(我在学习这个技巧的时候就很痛苦)。在这里,我对这个技巧进行了一个详细的讲解,相信各位初学者朋友可以学会如何制作可拖动窗体...
  • [原创]用C#创建可拖动窗体

    千次阅读 热门讨论 2004-09-14 21:36:00
    用C#创建可拖动窗体原著:lover_P 所谓“可拖动窗体”就是无需拖动标题栏就可以拖动的窗体,这在一个没有标题栏的窗体上是一种非常有用的技术。关于这一方面的技巧,网上已经有很多介绍,但都不是很详尽,有些实现...
  • ADempiere/Compiere 创建表和窗体的方法

    千次阅读 2010-04-22 14:30:00
    –1.创建表•在数据库中创建表•必须包含必选字段,下面斜体的为必选字段•创建表的SQL语句CREATE TABLE XX_Material (
  • 所谓“可拖动窗体”就是无需拖动标题栏就可以拖动的窗体,这在一个没有标题栏的窗体上是一种非常有用的技术。关于这一方面的技巧,网上已经有很多介绍,但都不是很详尽,有些实现也不够简洁。最主要
  • ACCESS数据库窗体

    千次阅读 2014-07-17 09:41:48
    3、记录源:可以是表、查询、SQL 语句,用于指定窗体操作的数据来源。 4、窗体的组成和结构:窗体的每个部分称为”节“;窗体由五个部分构成:主体、窗体页眉、窗 体页脚、页面页眉、页面页脚。 ①窗体页眉/页脚...
  • duilib学习记录创建自定义控件

    千次阅读 2016-01-13 15:56:29
    用Duilib开发界面时,很多情况下库自带的控件不满足需求,就需要基于Duilib建立自定义控件(自绘新的控件,或者用来封装win32的子窗体,来显示视频、网页等)。   在群里经常会有刚接触Duilib的朋友问题怎么建立...
  • 将数据表窗体修改为连续窗体

    千次阅读 2018-02-10 22:34:46
    本文内容步骤1:将数据表窗体修改为连续窗体步骤2:添加记录号与行记录删除按钮步骤3:在临时表添加2个字段,修改1个字段并在窗体中添加相关控件步骤4: 在子窗体页脚添加合计项步骤5:在子窗体页脚添加2个功能按钮...
  • C#简单窗体应用程序(一)

    万次阅读 多人点赞 2017-03-12 21:24:04
    例题:创建一个Windows窗体应用程序,在窗体中添加两个按钮,当单击第一个按钮时,显示“我来啦!”,当单击第二个按钮时,显示“我走啦!”。 第一步:创建项目; 文件→新建→项目;选择“项目类型”...
  • 显示和关闭子窗体: 方法1:代码:EatGood.FoodManageUI.MessageForm.ConfirmDelFeelkindOrFeelsForm feelkindform = new MessageForm....//创建一个窗体对象 feelkindform.ShowDialog() ; '//显示窗体窗体...
  • C#窗体编程

    千次阅读 2011-11-21 17:17:04
    1)在Windows中,具有图形用户界面(Graphics User Interface,GUI)的程序称为窗体程序,窗体程序由窗体(Form)和组件(Component)构成,每个应用程序都有一个主窗体,主窗体中分门别类地排列着各种组件。窗体也可以...
  • ucgui的窗体管理

    2014-01-24 22:04:34
    ucgui的窗体管理主要采用了WM_Obj的窗体数据结构,在该结构中采用两种方式记录窗体,一种是链表形式,一种多叉树的形式。第一种记录所有的窗口,第二种记录当前窗口和其兄弟窗口所在的位置。其结构体如下: ...
  •  /// 从数据库读取从userID开始的15条记录并显示  ///  ///  private void showAllUser(int userID)  {  ManageDB managedb = new ManageDB();  int count = managedb.getUserCount();  //这个方法获取总...
  • 将页面跟数据进行绑定,双击Courses_Overview页面,在UnKnown右击选择Select data source(选择数据), 在弹出的页面上点击Select按钮 在弹出的页面上选择我们刚才创建的数据模型Courses,然后点击Select按钮。...
  • 1.通过ODBC数据访问数据库,代表了如何建立关系数据库的ODBC数据 2使用ADO RecordSet对象保存数据,执行update方法实时更新 3通过文本框和按钮事件完成数据显示和修改   设计分析  其实使用ADO可以直接翻跟...
  • ucgui窗体管理(WM)

    2016-12-04 16:19:08
    ucgui的窗体管理主要采用了WM_Obj的窗体数据结构,在该结构中采用两种方式记录窗体,一种是链表形式,一种多叉树的形式。第一种记录所有的窗口,第二种记录当前窗口和其兄弟窗口所在的位置。其结构体如下: ...
  • 机房收费之登录窗体

    2019-10-16 21:09:44
    还好机房收费窗体的这个登录窗体在做学生的时候就做过了,还算是挺简单的,由于我又部分代码放在模块里了,所以我把模块里的部分代码也一起加上来了。我也就不多说什么了,直接上图上代码吧! 窗体界面 思维导图...
  • C#窗体的重要属性

    千次阅读 2012-09-14 15:52:05
    1. 窗体与控件 l 窗体的重要属性 属性 说明 Name 窗体对象的名字,用于在代码中进行标示 BackColor 窗体的背景色 BackgroundImage 窗体的...
  • c#窗体控件用法大全

    万次阅读 多人点赞 2011-06-05 00:31:00
    C#控件大全 收藏C#控件及常用设计整理1、窗体 1、常用属性 (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。 (2) WindowState属性: 用来获取或设置窗体的窗口状态。 ...
  • 通过将项从“数据”窗口拖动到窗体上,可以在窗体上显示数据。此演练创建一个简单窗体,能在几个单独的控件中显示单个表的数据。本示例使用源自 Northwind 示例数据库的 Customers 表。 本演练演示如下任务: ...
  • 建立Delphi窗体模板

    千次阅读 2007-02-28 18:37:00
    最近在写一个信息管理系统,为了方便使用Delphi先建立一个模板窗体,以后就可以直接使用这个窗体来建立客户窗体了。窗体要实现以下功能:1. 这个窗体是作为MDI子窗体使用的,Delphi默认的MDI子窗体关闭是最小化,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,435
精华内容 8,174
关键字:

创建窗体的记录源