用類定義窗體

C#——设计一个窗体程序,定义一个Student类,包含学号和姓名两个字段,并定义一个班级类ClassList,该类包括一个Student集合,使用索引器访问该集合,实现添加查询功能 设计界面: 编写代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.F... 阅读详情

using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Windows.Forms;


namespace cztocf
{
    public class button1 : Button
    {
        Button ok = new Button();


        public button1()
        {
            ok.Text = "ccee";
            ok.ForeColor = System.Drawing.Color.Red;
            this.Controls.Add(ok);
        }
    }
    public class classcount
    {
        public int backvalue(int x, int y)
        {
            return x + y;
        }
    }
    public class PagingSample : Form
    {
        Button prevBtn = new Button();
        Button nextBtn = new Button();

        static DataGrid myGrid = new DataGrid();
        static Label pageLbl = new Label();

        // 分页变量
        static int pageSize = 10;      // 要显示的页数
        static int totalPages = 0;      // 总页数
        static int currentPage = 0;      // 当前页
        static string firstVisibleCustomer = "";  // 当前页的第一条记录,用来进行移动“前一页”的定位。
        static string lastVisibleCustomer = "";    //当前页的最后条记录,用来进行移动“下一页”的定位。

        // DataSet用来绑定到DataGrid.
        static DataTable custTable;

        //初始化连接和DataAdapter.
        static SqlConnection nwindConn = new SqlConnection("Data Source=.;Integrated Security=SSPI;Initial Catalog=northwind");
        static SqlDataAdapter custDA = new SqlDataAdapter("", nwindConn);
        static SqlCommand selCmd = custDA.SelectCommand;

        public static void GetData(string direction)
        {
            // 创建返回一页记录的SQL语句
            selCmd.Parameters.Clear();

            switch (direction)
            {
                case "下一页":
                    selCmd.CommandText = "SELECT TOP " + pageSize + " CustomerID, CompanyName FROM Customers " +
                                  "WHERE CustomerID > @CustomerId ORDER BY CustomerID";
                    selCmd.Parameters.Add("@CustomerId", SqlDbType.VarChar, 5).Value = lastVisibleCustomer;
                    break;
                case "前一页":
                    selCmd.CommandText = "SELECT TOP " + pageSize + " CustomerID, CompanyName FROM Customers " +
                                  "WHERE CustomerID < @CustomerId ORDER BY CustomerID DESC";
                    selCmd.Parameters.Add("@CustomerId", SqlDbType.VarChar, 5).Value = firstVisibleCustomer;
                    break;
                default:
                    selCmd.CommandText = "SELECT TOP " + pageSize + " CustomerID, CompanyName FROM Customers ORDER BY CustomerID";

                    // 计算总页数
                    SqlCommand totCMD = new SqlCommand("SELECT Count(*) FROM Customers", nwindConn);
                    nwindConn.Open();
                    int totalRecords = (int)totCMD.ExecuteScalar();
                    nwindConn.Close();
                    totalPages = (int)Math.Ceiling((double)totalRecords / pageSize);

                    break;
            }

            // 用查询结果填充临时表
            DataTable tmpTable = new DataTable("Customers");
            int recordsAffected = custDA.Fill(tmpTable);

            // 如果表不存在,就创建
            if (custTable == null)
                custTable = tmpTable.Clone();

            // 如果有记录返回,就刷新表
            if (recordsAffected > 0)
            {
                switch (direction)
                {
                    case "下一页":
                        currentPage++;
                        break;
                    case "上一页":
                        currentPage--;
                        break;
                    default:
                        currentPage = 1;
                        break;
                }

                pageLbl.Text = "第" + currentPage + "/ " + totalPages + "页";

                // 清除行集,添加新记录
                custTable.Rows.Clear();

                foreach (DataRow myRow in tmpTable.Rows)
                    custTable.ImportRow(myRow);

                // 保存first 和 last 关键值
                DataRow[] ordRows = custTable.Select("", "CustomerID ASC");
                firstVisibleCustomer = ordRows[0][0].ToString();

                lastVisibleCustomer = ordRows[custTable.Rows.Count - 1][0].ToString();
            }
        }

 

        public PagingSample()
        {
            // 初始化控件并添加到Form
            this.ClientSize = new Size(560, 574);

            this.Text = "NorthWind 数据表";

            myGrid.Location = new Point(10, 10);
            myGrid.Size = new Size(340, 320);
            myGrid.AllowSorting = true;
            myGrid.CaptionText = "NorthWind 客户信息";
            myGrid.ReadOnly = true;
            myGrid.AllowNavigation = false;
            myGrid.PreferredColumnWidth = 150;

            prevBtn.Text = "前一页";
            prevBtn.Size = new Size(60, 24);
            prevBtn.Location = new Point(70, 340);
            prevBtn.Click += new EventHandler(Prev_OnClick);

            nextBtn.Text = "下一页";
            nextBtn.Size = new Size(60, 24);
            nextBtn.Location = new Point(140, 340);

            pageLbl.Text = "没有记录返回";
            pageLbl.Size = new Size(130, 16);
            pageLbl.Location = new Point(200, 244);

            this.Controls.Add(myGrid);
            this.Controls.Add(prevBtn);
            this.Controls.Add(nextBtn);
            this.Controls.Add(pageLbl);
            nextBtn.Click += new EventHandler(Next_OnClick);


            // 计算默认的第一页,并进行绑定
            GetData("Default");
            DataView custDV = new DataView(custTable, "", "CustomerID", DataViewRowState.CurrentRows);
            myGrid.SetDataBinding(custDV, "");
        }

 

        public static void Prev_OnClick(object sender, EventArgs args)
        {
            GetData("前一页");
        }

        public static void Next_OnClick(object sender, EventArgs args)
        {
            GetData("下一页");
        }

        private void InitializeComponent()
        {
            this.SuspendLayout();
            //
            // PagingSample
            //
            this.ClientSize = new System.Drawing.Size(543, 371);
            this.Name = "PagingSample";
            this.Load += new System.EventHandler(this.PagingSample_Load);
            this.ResumeLayout(false);

        }

        private void PagingSample_Load(object sender, EventArgs e)
        {

        }

    }
} 

【WinFrom] C# 学习自定义窗体类封装过程 阅读详情

相关推荐

c++程序设计定义一个CForm窗体类,在该类中包括:

(3)成员函数:SetTitle()用来给标题赋值;SetSize()用来给窗体宽度和高度赋值;Show()显示窗体标题和尺寸信息;//参数需根据要求定义。(1)成员变量:title(窗体标题),width(窗体宽度),height(窗体高度);(5)要求使用多文件编程。(文件名例如:CForm.h,CForm.cpp,(2)合适的构造函数和析构函数,实现调用构造函数和析构函数的输出语句;(4)要求在成员函数中使用对象指针this。

toptopniba的博客 674

C#如何定义全局变量,不同的子窗体和类都可以访问

C#如何定义不同的窗体和类都可以访问的全局变量?首先要说明,这里区别于某一个具体窗体或者类中的全局变量,可以在该窗体包含的控件的事件以及该窗体中定义的方法和类访问,这种全局变量不能在别的窗体或者类中访问。定义方法:在主窗体的cs文件中定义:namespace 命名空间{public partial class MainForm : Form{    。。。}public class 类名{    ...

acoolgiser的博客 1万+

C#Windows窗体界面设计_05_自定义函数 外部类访问读写窗体类的控件的私有属性

binzhouweichao@163.com 2013-10-17 仍然沿用前面所使用的项目。 参考: 访问控件私有属性:http://bbs.youkuaiyun.com/topics/40412507 静态类与非静态类:http://www.360doc.com/content/13/0608/09/10504424_291426603.shtml 获取主窗口控件引用:http://zhida

binzhouweichao@163.com 2996

【python随笔】之【创建窗体与自定义创建窗体类】

创建窗体 import tkinter my_tk = tkinter.Tk() # 窗体的构造函数 my_tk.title('这是一个窗体') # 窗体标题 my_tk.geometry('600x400+100+100') # 窗体横纵长,及窗体位置 my_tk.mainloop() # 打开窗体 自定义创建窗体 import tkinter class MyTK: def __init__(self, title, height, width, x, y): s

AA8j的博客 786

【Python_PySide6学习笔记(二十六)】基于PySide6实现自定义标题栏类tQTitleBar,实现窗体的无边框美化

此篇文章中介绍基于 PySide6 手搓的自定义标题栏类 tQTitleBar ,实现窗体的无边框美化,可通过该标题栏,实现窗体移动,最大化,最小化,关闭功能,有需要的读者可以点赞收藏,也欢迎在评论区进行讨论。

禾戊之昂的博客 2219

QT5窗体生成与显示的完整实践教程

QT5作为一套跨平台的C++库,为开发者提供了一整套开发工具和API,用于创建图形用户界面(GUI)及其他类型的图形应用程序。它被广泛应用于嵌入式系统、移动应用、桌面软件以及服务器端软件的开发中。QT5不仅支持传统桌面应用程序的开发,还支持Web应用程序和移动应用程序,其高效的渲染机制和良好的跨平台特性是其核心优势。QT5中的核心组件为应用程序提供基本的功能,例如事件处理、信号槽机制、数据流和容器类。核心组件是独立于GUI的,使得开发者可以在无界面的应用程序中利用QT的强大功能。

weixin_32324637的博客 940

发送消息到自定义窗体类

在控件项目中经常要发送一些信息给某个对象,这时就想到了使用窗体消息来传递。虽然有时候传递对象的指针也是可行的,但他往往没有传递句柄来的更方便,因为传递指针需要引入头文件,头文件相互引入比较多时,管理上会比较混乱。 1.创建一个对话框工程,工程名称“发送消息” 2.添加一个“MFC类”,类名称为CRevMessage,基类选择CWnd 3.在RevMessage.h中添加自定义消息 #def

wklnewlife的专栏 928

保姆级教程:用中移ML307模组对接高德/OneOS定位服务,从配置apikey到解析+MLBSLOC状态码

本文详细介绍了如何使用中移ML307系列模组对接高德/OneOS定位服务,从配置apikey到解析+MLBSLOC状态码的全过程。涵盖高德定位服务和OneOS定位服务的配置步骤、常见错误处理及性能优化技巧,帮助开发者快速实现基站定位功能,提升物联网项目的定位精度和稳定性。

weixin_30632089的博客 505

c#在类的方法中调用主窗体或或某窗体控件

一般情况下,不调整情况下在主窗体新定义的类或者新添加类中都无法调用某窗体的某控件。 一、主窗体定义类中方法调用主窗体控件 class Form1: Form { public static Form1 form1; public Form1() { InitializeComponent(); form1 = this;//不添加时,运行可能存在问题 } public class ReadData { public void Me

mlxg99999的博客 6551

手把手教你用Synopsys AHB VIP搭建验证环境:从SINGLE到WRAP16的完整波形分析与避坑指南

本文详细介绍了如何使用Synopsys AHB VIP搭建验证环境,从基础配置到复杂波形调试实战。重点解析了AHB协议中各种Burst类型的地址计算机制,包括INCR和WRAP类型,并提供了实际案例和避坑指南,帮助工程师快速掌握验证技巧。

weixin_42552716的博客 413

在LinuxMint 22.1(Ubuntu24.04)上安装使用同花顺远航版

Linux用户成功在LinuxMint22.1系统上通过Wine9.0运行同花顺远航版,解决了长期困扰的股票行情软件问题。此前Linux原生版同花顺功能简陋且停止更新,Wine版通达信存在显示问题。作者作为自由软件支持者,通过调整Wine配置文件解决了高分屏显示异常问题,实现了远航版的正常使用。期待同花顺能重启Linux原生版开发,支持更多处理器架构,完善国产软件生态。该方案为Linux股票软件用户提供了实用参考。

5129

java jframe类_java窗体 自定义JFrame类

[java]代码库import javax.swing.*;import java.util.concurrent.*;public class SubmitSwingProgram extends JFrame {JLabel label;public SubmitSwingProgram() {super("Hello Swing");label = new JLabel("A Label")...

weixin_28694169的博客 480

ROS学习笔记之——无人机PID调参过程记录

For cooperaive inquiries, please visit the website:guanweipeng.com

gwpscut的博客 6827

Arx无模态窗口类定义

Arx无模态窗口类定义,单例模式1、主窗体类定义class CDlgScanDwg : public CAcUiDialog  //主窗体{...    CDlgPrintPigeOut *m_pDlgPigeOut;   //子窗体指针    static CDlgScanDw

TXH0001的专栏 1210

​开源大模型实战:GLM-4.1V-Thinking本地部署教程(附API调用代码)

​在AI应用从“能用”向“好用”进阶的当下,​的需求愈发强烈:企业需保障数据安全(如医疗影像、金融报告不外传),开发者追求定制化能力(如微调模型适配垂直场景),科研团队则依赖离线环境处理敏感数据。智谱AI开源的​(10B级参数,支持图像、视频、文档多模态推理)凭借的优势,成为本地部署的热门选择。不过,对于“不想折腾技术”的普通用户或快速验证需求的团队而言,​,无需安装配置,打开即用,堪称“零门槛”体验的捷径。本文将分为两部分:先手把手教你​(适合有技术背景的用户),再对比介绍。

gogoMark的博客 1339

R语言clusterProfiler实战:GO与KEGG富集分析从入门到精通

本文提供了一份详尽的R语言clusterProfiler实战指南,从环境配置、数据导入、基因ID转换到GO与KEGG富集分析及可视化,手把手教你解读生物学意义。文章重点介绍了如何利用clusterProfiler这一强大工具,将差异基因列表转化为清晰的生物学通路与功能故事,并分享了结果解读、可视化以及处理非模式生物等进阶技巧与避坑指南。

weixin_29044713的博客 162

一个简单的VB窗体类(修正版)

又有一段时间没更新博客了,恰好刚才在写代码时,想起以前写的一个VB窗体类的代码,于是扒了出来:* ************************************************** ** 模块名称:MYWindow.cls* 模块功能:自定义窗口类* 编码:lyserver* 联系方式:http://blog.youkuaiyun.com/lys

lyserver的专栏 4584

【YOLO26科研级突破】集成BiFPN双向特征金字塔,让多尺度特征融合效率与精度双跃升

打开确保模型解析器能识别BiFPN模块。通过将BiFPN双向特征金字塔集成到YOLO26中,我们实现了一个“全尺度双向特征流动+加权融合+精准检测”的目标检测模型。这个改进不仅在工程上能大幅提升多尺度、复杂场景下的检测精度,更在科研上提供了“双向特征融合”的创新思路——这种思路可以延伸到其他检测网络(如Faster R-CNN、SSD)的Neck模块改进中,帮你在论文中打造独特的研究点。

LXY_LOVE36的博客 199

VS+QT环境下新建一个窗体,以及绑定

引用窗体类的头文件, 固定套路 ui_窗体名.h。第二步,新建类,添加->新建的地方和图一 一致。新建QT窗体,这一步没什么难的,很简单。第三步,类与窗体的绑定,这一步比较关键。定义窗体类,类名与8中设置一致。

路 225

【AI黑话日日新】什么是AI Infra?

是支撑AI模型开发、训练、推理、部署与规模化运营的,是连接底层算力与上层AI应用的“数字基建”。没有高效的AI Infra,大模型训练、推理与落地都无法高效实现。

专注:太空算力、AI infra、异构调度、大模型成本工程 1094

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Winform 窗体控件最大化自适应

运行窗体效果如下:  默认点击最大化效果如下: 修改后最大化效果如下:控件自动缩放, 步骤实现如下: 1.在窗体中放一个容器(Panel),将容器的Dock属性设置为Fill。窗体中所有控件都放入这个容器中。 2.创建一个窗体类,该窗体类继承于原始窗体类,原来的窗体继承创建的窗体类:如下图所示  新建一个 NForm 窗体类,继承默认窗体类 Form ,而原来的 For...

lingshuangcanxue 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

自定义吐丝类窗体,并实现拖拽功能

/** * 显示自定义吐丝 * @param address */ private void showMyToast(String address) { if(view != null && mWM != null){ mWM.removeView(view); mWM = null;

Android 735

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

vb.net 中MDI子窗体对其父窗体属性的获取与修改

   兄弟前些日子做项目,第一次使用vb.net,碰上不少问题,相信很多初学者多多少少都会遇到这些问题,为了初学者学习方便,小弟总结了一些小经验,供大家参考讨论。第一篇:如何在MDI子窗体中控制父窗体的属性等等    功能:比如打开一个子窗体后,就要设置父窗体中的某个菜单项或者按钮为不可见状态,诸如此类。    内容:MDI父窗体和MDI子窗体类定义如下:MDI父窗体:Class MDIForm 

binbin_yang的专栏 1381

C# winform 窗体自定义

今天看了篇技术帖,原来是可以不通过工具栏的现有工具进行布局的。 以前 当我要有2个窗体的时候,就会拖拽2个 然后进行编辑。 现在才明白,只要写成类也是可以使用的。 打开一个窗体的文件,发现当自动新建个窗体时,其实是系统帮忙做了很多的准备工作。 例如Designer.cs中就有InitializeComponent()和Dispose(bool disposing)这两个关键的函数 尤其...

weixin_30251587的博客 173

Winform窗体设计器无法打开!

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34292924的博客 2523

Qt系列文章之 自定义控件并提升到ui文件

上一篇文章介绍Qt中的一个基本事件QMouseEvent,此文介绍如何基于现有控件类来设计自己的控件并将其提升到界面中的控件之上。 自定义控件类 上一篇文章中使用鼠标事件来捕获界面鼠标输入信息,但是当将鼠标放到表格窗体上进行点击时并没有任何反应。那是因为表格窗体是一个独立的窗体对象,每个窗体对象都有自己的鼠标事件,因此如果要在表格窗体上操作鼠标,需要对表格窗体进行单独的事件函数定义。这样做的方法是基于原来的QTableWidget自定义用户窗体类。 在Qt项目中新建一个C++ Class,输入一个自定义的用

一枚半路出家的码农儿 1574
上一篇: 用dataset更新數據庫
下一篇: 基于C#的Socket开发
jackeyabc
博客等级 码龄20年 71粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值