Hi Bruce,
Thanks for reply.
I did the search for C# UML as well before posting but that didn't give
links where I can find UML diagram for "c# api" you know. I am not
really looking for UML generation or design features in IDE, I am
looking for diagram of the system api itself :(
But I get what you are saying, it will take time to get used to this
MSDN stuff.
I will keep looking.
Now as we are on this thread, I would ask one more question, actually I
am trying to develop Windows Forms application (not Web.UI stuff), and
I wanted to put LinkLabel in the DataColumn of DataGrid but I am not
able to do so. I got this below link where the guy extended
DataGridColumnStyle to have combobox but I can't figure out how to put
LinkLabel instead of combobox used there.
http://www.c-sharpcorner.com/winform...ataGridSKJ.asp
The issue with that example code is I have to setup too many things to
run it as its using Sql. I appreciate his sharing but I wish he would
have done it more simplistically to show an example rather than having
those sql things in there.
I copied his code and all and tried to understand by putting Enum
object in combobox but all in vein...though I now understand those
DataSet and all upto some extent. So at the end I decided to extend the
DataGridColumnStyle to put LinkLabel and copied Paint method from his
code and have mixed things right now. Here is the code which is not
working, :)
namespace TestUIApplication
{
public class LinkColumn:DataGridColumnStyle
{
int xMargin = 5;
int yMargin = 5;
private LinkLabel linkLabel;
//
// Create a new column - DisplayMember, ValueMember passed by string
//
public LinkColumn(LinkLabel linkLabel)
{
this.linkLabel = linkLabel;
}
protected override void Abort(int RowNum)
{
MessageBox.Show(new Form(),"in Abort()");
}
protected override bool Commit(CurrencyManager DataSource,int RowNum)
{
MessageBox.Show(new Form(),"in Commit()");
return true;
}
protected override void ConcedeFocus()
{
MessageBox.Show(new Form(),"in ConcedeFocus()");
}
protected override void Edit(CurrencyManager Source ,int
Rownum,Rectangle Bounds, bool ReadOnly,string InstantText, bool
CellIsVisible)
{
MessageBox.Show(new Form(),"in Edit()");
}
protected override int GetMinimumHeight()
{
return linkLabel.PreferredHeight + yMargin;
}
protected override int GetPreferredHeight(Graphics g ,object Value)
{
System.Diagnostics.Debug.WriteLine("GetPreferredHe ight()");
return FontHeight+yMargin;
}
protected override Size GetPreferredSize(Graphics g, object Value)
{
MessageBox.Show("GetPreferredSize():"+linkLabel.Te xt);
Size Extents = Size.Ceiling(g.MeasureString(linkLabel.Text,
this.DataGridTableStyle.DataGrid.Font));
Extents.Width += xMargin * 2 + DataGridTableGridLineWidth ;
Extents.Height += yMargin;
return Extents;
}
protected override void Paint(Graphics g,Rectangle
Bounds,CurrencyManager Source,int RowNum)
{
Paint(g, Bounds, Source, RowNum, false);
}
protected override void Paint(Graphics g,Rectangle
Bounds,CurrencyManager Source,int RowNum,bool AlignToRight)
{
string Text = linkLabel.Text;
PaintText(g, Bounds, Text, AlignToRight);
}
private void PaintText(Graphics g ,Rectangle Bounds,string Text,bool
AlignToRight)
{
Brush BackBrush = new SolidBrush(this.DataGridTableStyle.BackColor);
Brush ForeBrush= new SolidBrush(this.DataGridTableStyle.ForeColor);
PaintText(g, Bounds, Text, BackBrush, ForeBrush, AlignToRight);
}
private void PaintText(Graphics g , Rectangle TextBounds, string
Text, Brush BackBrush,Brush ForeBrush,bool AlignToRight)
{
System.Console.WriteLine("in paint");
Rectangle Rect = TextBounds;
RectangleF RectF = Rect;
StringFormat Format = new StringFormat();
if(AlignToRight)
{
Format.FormatFlags = StringFormatFlags.DirectionRightToLeft;
}
switch(this.Alignment)
{
case HorizontalAlignment.Left:
Format.Alignment = StringAlignment.Near;
break;
case HorizontalAlignment.Right:
Format.Alignment = StringAlignment.Far;
break;
case HorizontalAlignment.Center:
Format.Alignment = StringAlignment.Center;
break;
}
Format.FormatFlags =Format.FormatFlags;
Format.FormatFlags =StringFormatFlags.NoWrap;
g.FillRectangle(BackBrush, Rect);
Rect.Offset(0, yMargin);
Rect.Height -= yMargin;
g.DrawString("maulin", this.DataGridTableStyle.DataGrid.Font,
ForeBrush, RectF, Format);
Format.Dispose();
}
private int DataGridTableGridLineWidth
{
get
{
if(this.DataGridTableStyle.GridLineStyle ==
DataGridLineStyle.Solid)
{
return 1;
}
else
{
return 0;
}
}
}
}
}
And here is the method that loads things,
private void Form1_Load(object sender, System.EventArgs e)
{
listBox1.DataSource = this.coloursCollection;
DataSet ds = new DataSet("ColoursSet");
DataTable dt = ds.Tables.Add("ColoursTable");
dt.Columns.Add("ColoursColumn",typeof(LinkLabel));
LinkLabel ll = new LinkLabel();
ll.Name = "maulin";
ll.Text ="Maulin";
DataRow dr = dt.NewRow();
dr["ColoursColumn"] = ll;
dt.Rows.Add(dr);
GridTableStyle = new DataGridTableStyle();
GridTableStyle.MappingName = "ColoursSet";
GridTableStyle.GridColumnStyles.Add(new LinkColumn(ll));
GridTableStyle.GridColumnStyles[0].MappingName =
"ColoursTable";//EDIT ME
GridTableStyle.GridColumnStyles[0].HeaderText = "test";
GridTableStyle.GridColumnStyles[0].Alignment =
HorizontalAlignment.Left;
GridTableStyle.GridColumnStyles[0].Width = 700;
GridTableStyle.GridColumnStyles[0].NullText = string.Empty;
dataGrid1.DataSource = ds;
dataGrid1.DataMember = "ColoursTable";
dataGrid1.TableStyles.Add(GridTableStyle);
}
Please ignore my table,column names and all , its all the code after
much playing around so far and names might not make sense...
Do you have any idea how to do this? If you wish I can repost this same
thing so it appears in people's search as it would be in appropriate
thread...otherwise somebody might just go into abysmal I am in...:)
Thanks ton for helping.
Regards,
Maulin
Bruce Wood wrote:
I typed "C# UML diagram" into Google and came up with a bunch of
hits.
As well, VS2005 is coming with a bunch of code refactoring and code
design features in it, including (correct me if I'm wrong), UML-to-C#
and C#-to-UML features.
When I moved from Java to C#, it too cost me time and a bit of
frustration getting my head around the MSDN documentation format.
It's now second nature to read the stuff and figure out how to do things.
The only thing I miss is knowing--for sure--which exceptions the
various methods and properties throw. :(