http://www.dotnet247.com/247reference/msgs/21/106280.aspx

解决方案 »

  1.   

    1.在http://www.dotnet247.com/247reference/msgs/21/106280.aspx中,显示时可以,但编辑时不行。
    2.我是用的winform,
      

  2.   

    在那个例子的基础上改动一下,在构造函数中加入this.TextBox. passwordChar='*',比如:public class myDataGridTextBoxColumn
    {
    public myDataGridTextBoxColumn():base()
    {
    this.TextBox.PasswordChar='*';
    }
    ...}
      

  3.   

    可以自己定义一个datagridcolumnstyle 列在上面浮动一个textbox够绝的---呵呵!
      

  4.   

    idiotzeng is right.public class abc:Form
    {
    ...
    private void abc_Load(object sender, System.EventArgs e)
    {
    SqlDataAdapter daa=new SqlDataAdapter("select Name from table1",sqlConnection1);
    DataSet ds=new DataSet();
    daa.Fill(ds,"abc");
    myColumn dc=new myColumn();
    dc.MappingName="Name";
    DataGridTableStyle dt=new DataGridTableStyle();
    dt.MappingName="abc";
    dt.GridColumnStyles.Add(dc);
    this.dataGrid1.TableStyles.Add(dt);
    this.dataGrid1.DataSource=ds;
    this.dataGrid1.DataMember="abc";
    }
    }
    public class myColumn:DataGridTextBoxColumn
    {
    public myColumn()
    {
    this.TextBox.PasswordChar='*';
    }
    protected override void Paint(Graphics g,Rectangle rc,CurrencyManager cm,int rowNum,Brush backBrush,Brush foreBrush,bool RtoL)
    {
    base.Paint(g,rc,cm,rowNum,backBrush,foreBrush,false);
    g.FillRectangle(backBrush,rc);
    string content=((DataRowView)cm.List[rowNum])[this.MappingName].ToString();
    string s="";
    for (int i=0;i<content.Length;i++)
    s+="*";
    g.DrawString(s,this.DataGridTableStyle.DataGrid.Font,foreBrush,rc);
    }
    }
    }