在A窗体中点击BUTT打开B窗体,双击B双体DGV中某行,把该行对应列的数据赋值给A窗体的textbox?

WinForm
在A窗体中点击BUTT打开B窗体,双击B双体DGV中某行,把该行对应列的数据赋值给A窗体的textbox?简单的处理办法,
窗体B 定义一个 公有的 属性,

窗体B,点击某一行后,把该行的数据 赋给这个  公有的属性,

窗体A,获取该属性的值。

{
   formB  b = new formB();
   b.show();

   if(b.dialogResult = DialogResult.OK)
  {
      extbox.text = b.abc;
  }
}


类似于这样吧 

有CurrentRow, SelectedCells和Rows三种方法:
1. CurrentRow:单击DataGridView任一位置都可以赋值到textBox,这种方法最好用.


private void dgvACC_CellClick(object sender, DataGridViewCellEventArgs e)       
{
            string data1 = dgvACC.CurrentRow.Cells[0].Value.ToString();
            string data2 = dgvACC.CurrentRow.Cells[1].Value.ToString();
            txtACC.Text = data1;
            txtPWD.Text = data2;
}
2. SelectedCells: 用SelectedRows时必须 单击该行最前面的的方格而不能点击表格里有数据的单元格,如果点击表内则会报错: 索引超出范围。必须为非负值并小于集合大小。参数名: index.

用断点调试查看了一下, txtPWD.Text的Count值等于txtACC.Text的Count值,显然是个错误.


private void dgvACC_CellClick(object sender, DataGridViewCellEventArgs e)    
{
            string data2 = dgvACC.SelectedCells[0].Value.ToString();
            string data3 = dgvACC.SelectedCells[2].Value.ToString();
            txtACC.Text = data1;
            txtPWD.Text = data2;
}

 

3. 而第三种方式是教材上提供的案例Rows, 这个方法缺点就是DataGridView第一行无法选中,其他都正常


private void dgvACC_CellClick(object sender, DataGridViewCellEventArgs e)   
        {
            if (e.RowIndex>0)
            {
                String strACC  = (String)dgvACC.Rows[e.RowIndex].Cells[0].Value;
                sqlcon = new SqlConnection(Myclass.Myclass1.sqlCon);
                SqlDataAdapter sqlda = new SqlDataAdapter("select AccountID,Password from tb_Power where AccountID=”strACC”", sqlcon);
               DataSet myds = new DataSet();
               sqlda.Fill(myds);
               if (myds.Tables[0].Rows.Count >0)
               {
                   txtACC.Text = myds.Tables[0].Rows[0][1].ToString();
                   txtPWD.Text = myds.Tables[0].Rows[0][2].ToString();
                }
            }
        }

 

对比以上三种方法,新手小白使用CurrentRow最完美。

找到一段原来写的代码 ,打开链接数据库窗口,链接成功后 ,把链接内容 传递给 当前窗口。。

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            DB.DataBase_LoginForm dataForm = new DB.DataBase_LoginForm(this._global_const);
            DialogResult result = dataForm.ShowDialog();
            if (result == DialogResult.OK)
            {
                this._global_const.USER_DB_LINK_STRING = dataForm.DBString;
                this._global_const.USER_DB_SERVER = dataForm.DBSource;
                this._global_const.USER_DB_DATABASE = dataForm.DBDataBase;
                this._global_const.USER_DB_USER = dataForm.DBUser;
                this._global_const.USER_DB_PASS = dataForm.DBPass;
                this._global_const.DB_SERVER_TYPE = dataForm.ServerType;
                //this.toolStripStatusLabel1.Text = "";
                //this.toolStripStatusLabel1.Text = "当前数据库:" + dataForm.DBSource + "当前登录用户:" + dataForm.DBUser;

                this.Cursor = Cursors.WaitCursor;

                //读取表格
                if (dataForm.ServerType == DBServerType.MySQL)
                {
                    SetTableListByMySQL(true);
                }
                else if (dataForm.ServerType == DBServerType.SQLServer)
                {
                    SetTableListBySQLServer(true);

                }

            }
            else
            {
                //MessageBox.Show("数据库连接失败!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                //this._user_db_link_string = string.Empty;
            }
            this.Cursor = Cursors.Default;
        }


 public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 fm = new Form2();
            fm.ShowT(this);
        }
        public void Tst(string t) {
            this.textBox1.Text = t;
        }


//Form2窗口:
  public Form2()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            fm.Tst(this.textBox1.Text);
        }
        Form1 fm = new Form1();
        public void ShowT(Form1 Fm) {
            this.Show();
            fm = Fm;
        }
希望对你有帮助

private void toolStripButton1_Click(object sender, EventArgs e)
        {
            bForm dataForm = new bForm();
            DialogResult result = dataForm.ShowDialog();

            if (result == DialogResult.OK) //bForm 关闭时 要设置一下  dialogResult 的值 是 OK
            {
                this.textBoxAAA.Text= dataForm.ABC ;
            }
            else
            {
                
            }
            this.Cursor = Cursors.Default;
        }


public string ABC = "";

B窗口

private void button1_Click(object sender, EventArgs e)
        {
            this.ABC = "我是选中的数据";
            this.DialogResult = DialogResult.OK;
            this.Close();
        }

谢谢,按照你的方法搞定了
还想请教下在A窗体,textbox文本框里输入代码或名称,实现模糊搜索,并在弹出的下拉框显示搜索结果怎么
论坛回帖机实现?

没有现成的代码可以参考。

土办法:文本框下面放一个 combox(让文本框把 combox隐藏掉。),文本框文字变更单时候,刷新combox的列表内容。。。

 

### 回答1: 在MATLAB,afd_butt用于定义巴特沃斯(Butterworth)数字滤波器的传递函数。巴特沃斯滤波器是一种常见的滤波器类型,它具有平坦的幅频响应和无限增益边缘特性。 afd_butt函数的语法如下: [b, a] = afd_butt(N, fp, fs, fsamp) 其,N是滤波器的阶数,fp是通带截止频率,fs是阻带截止频率,fsamp是采样频率。函数会返回滤波器的分子系数b和分母系数a。 阶数N决定了滤波器的陡度,一般来说,阶数越高,陡度越大。通带截止频率fp是指在哪个频率开始降低幅频响应,而阻带截止频率fs是指在哪个频率开始增加滤波器的衰减。 采样频率fsamp是指信号的采样频率,它影响到滤波器的性能。 例如,若要创建一个10阶巴特沃斯低通滤波器,通带截止频率为1kHz,阻带截止频率为2kHz,采样频率为10kHz,可以使用以下代码: N = 10; fp = 1000; fs = 2000; fsamp = 10000; [b, a] = afd_butt(N, fp, fs, fsamp); 输出的b和a矩阵分别是巴特沃斯滤波器的分子系数和分母系数,可以使用filter函数将其应用于待滤波的信号。 ### 回答2: 在Matlab,通过使用函数`afd_butt`来定义Butterworth无限脉冲响应(IIR)数字滤波器的特性。该函数用于创建一个描述Butterworth滤波器的对象。 Butterworth滤波器是一种在频率响应特性方面具有平滑过渡的低通、高通、带通或带阻滤波器。该滤波器的特点是在整个频率范围内具有均匀的增益特性。对于一阶系统,Butterworth滤波器的增益特性对应一个极点,而对于高阶系统,增益特性对应一组极点。 `afd_butt`函数的语法如下: ``` H = afd_butt(N, Wc) ``` 其,`N`是滤波器的阶数(即极点的数量),`Wc`是归一化的截止频率。 具体而言,`N`定义了滤波器的阶数,决定了滤波器的陡峭度。而`Wc`确定了截止频率的位置,通常在0到0.5之间进行归一化。截止频率是指在滤波器特性开始降低的频率。 函数`afd_butt`会返回一个`AnalogFilter`对象`H`,该对象描述了Butterworth滤波器的特性。这个对象可以进一步使用其他函数,如`lp2bp`(低通到带通滤波器的转换)或`bode`(绘制滤波器的频率响应曲线)进行进一步的处理和分析。 通过定义Butterworth滤波器的特性,研究人员和工程师可以在信号处理、图像处理以及其他领域使用Matlab进行滤波和信号分析。 ### 回答3: 在MATLAB,可以使用`afd_butt`函数来定义Butterworth滤波器的传递函数。Butterworth滤波器是一种经典的滤波器,具有平坦的幅频响应和较慢的滚降特性。 `afd_butt`函数的语法如下: ```matlab [b, a] = afd_butt(n, poleloc, OmegaC, Ts) ``` 其,`n`是滤波器的阶数,`poleloc`是极点分布方式,`OmegaC`是截止频率(以归一化频率表示),`Ts`是采样时间周期。函数的输出为滤波器的分子和分母多项式系数。 `poleloc`的取值可以是以下三种: - `'[z,p,k]'`:手动指定极点和零点的位置。 - `'pass'`:极点位于单位圆上,滤波器为低通或高通。 - `'stop'`:极点等距分布在单位圆上,滤波器为带阻。 `OmegaC`是截止频率参数,当`poleloc`为`'pass'`或`'stop'`时,`OmegaC`为标量。当`poleloc`为`'[z,p,k]'`时,`OmegaC`为复数向量,其每个元素都代表每个极点或零点的归一化频率。 `Ts`是采样时间周期,用于离散时间滤波器设计。当`Ts`为`-1`时,表示连续时间滤波器。 返回的`b`和`a`分别是滤波器的分子和分母多项式系数,可以使用这些系数构造滤波器对象,如`dfilt.df2t(b,a)`。 通过使用`afd_butt`函数,可以根据指定的参数定义Butterworth滤波器的传递函数,并应用于信号滤波和处理的任务
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值