コード例 #1
0
        [Test]         // ctor (LinkLabel)
        public void Constructor1()
        {
            LinkLabel l = new LinkLabel();

            l.Text = "Managed Windows Forms";

            LinkLabel.LinkCollection links1 = new LinkLabel.LinkCollection(
                l);
            LinkLabel.LinkCollection links2 = new LinkLabel.LinkCollection(
                l);

            Assert.AreEqual(1, links1.Count, "#A1");
            Assert.IsFalse(links1.IsReadOnly, "#A2");
            Assert.IsFalse(links1.LinksAdded, "#A3");

            LinkLabel.Link link = links1 [0];
            Assert.IsNull(link.Description, "#B1");
            Assert.IsTrue(link.Enabled, "#B2");
            Assert.AreEqual(21, link.Length, "#B3");
            Assert.IsNull(link.LinkData, "#B4");
            Assert.IsNotNull(link.Name, "#B5");
            Assert.AreEqual(string.Empty, link.Name, "#B6");
            Assert.AreEqual(0, link.Start, "#B7");
            Assert.IsNull(link.Tag, "#B8");
            Assert.IsFalse(link.Visited, "#B9");

            Assert.AreEqual(1, links2.Count, "#C1");
            Assert.IsFalse(links2.IsReadOnly, "#C2");
            Assert.IsFalse(links2.LinksAdded, "#C3");
            Assert.AreSame(link, links2 [0], "#C4");
        }
コード例 #2
0
        [Test]         // Add (LinkLabel.Link)
        public void Add1_Overlap()
        {
            LinkLabel l = new LinkLabel();

            l.Text = "Managed Windows Forms";

            LinkLabel.LinkCollection links = new LinkLabel.LinkCollection(
                l);

            LinkLabel.Link linkA = new LinkLabel.Link(0, 7);
            links.Add(linkA);
            Assert.AreEqual(1, links.Count, "#A1");
            Assert.IsTrue(links.LinksAdded, "#A2");
            Assert.AreSame(linkA, links [0], "#A3");

            LinkLabel.Link linkB = new LinkLabel.Link(5, 4);
            try {
                links.Add(linkB);
                Assert.Fail("#B1");
            } catch (InvalidOperationException ex) {
                // Overlapping link regions
                Assert.AreEqual(typeof(InvalidOperationException), ex.GetType(), "#B2");
                Assert.IsNull(ex.InnerException, "#B3");
                Assert.IsNotNull(ex.Message, "#B4");
            }

            Assert.AreEqual(2, links.Count, "#B5");
            Assert.IsTrue(links.LinksAdded, "#B6");
            Assert.AreSame(linkA, links [0], "#B7");
            Assert.AreSame(linkB, links [1], "#B8");
            Assert.AreEqual(0, linkA.Start, "#B9");
            Assert.AreEqual(7, linkA.Length, "#B10");
            Assert.AreEqual(5, linkB.Start, "#B11");
            Assert.AreEqual(4, linkB.Length, "#B12");

            LinkLabel.Link linkC = new LinkLabel.Link(14, 3);
            try {
                links.Add(linkC);
                Assert.Fail("#C1");
            } catch (InvalidOperationException ex) {
                // Overlapping link regions
                Assert.AreEqual(typeof(InvalidOperationException), ex.GetType(), "#C2");
                Assert.IsNull(ex.InnerException, "#C3");
                Assert.IsNotNull(ex.Message, "#C4");
            }

            Assert.AreEqual(3, links.Count, "#C5");
            Assert.IsTrue(links.LinksAdded, "#C6");
            Assert.AreSame(linkA, links [0], "#C7");
            Assert.AreSame(linkB, links [1], "#C8");
            Assert.AreSame(linkC, links [2], "#C9");
            Assert.AreEqual(0, linkA.Start, "#C10");
            Assert.AreEqual(7, linkA.Length, "#C11");
            Assert.AreEqual(5, linkB.Start, "#C12");
            Assert.AreEqual(4, linkB.Length, "#C13");
            Assert.AreEqual(14, linkC.Start, "#C14");
            Assert.AreEqual(3, linkC.Length, "#C15");
        }
コード例 #3
0
        [Test]         // Add (LinkLabel.Link)
        public void Add1_Value_Null()
        {
            LinkLabel l = new LinkLabel();

            l.Text = "Managed Windows Forms";

            LinkLabel.LinkCollection links = new LinkLabel.LinkCollection(
                l);
            try {
                links.Add((LinkLabel.Link)null);
                Assert.Fail("#1");
            } catch (NullReferenceException) {
            }
        }
コード例 #4
0
        [Test] // Add (int, int)
        public void Add2()
        {
            LinkLabel l = new LinkLabel();

            l.Text = "Managed Windows Forms";

            LinkLabel.LinkCollection links1 = new LinkLabel.LinkCollection(
                l);
            LinkLabel.LinkCollection links2 = new LinkLabel.LinkCollection(
                l);

            LinkLabel.Link linkA = links1.Add(0, 7);
            Assert.AreEqual(1, links1.Count, "#A1");
            Assert.AreEqual(1, links2.Count, "#A2");
#if NET_2_0
            Assert.IsTrue(links1.LinksAdded, "#A3");
            Assert.IsFalse(links2.LinksAdded, "#A4");
#endif
            Assert.AreSame(linkA, links1 [0], "#A5");
            Assert.AreSame(linkA, links2 [0], "#A6");

            LinkLabel.Link linkB = links1.Add(8, 7);
            Assert.AreEqual(2, links1.Count, "#B1");
            Assert.AreEqual(2, links2.Count, "#B2");
#if NET_2_0
            Assert.IsTrue(links1.LinksAdded, "#B3");
            Assert.IsFalse(links2.LinksAdded, "#B4");
#endif
            Assert.AreSame(linkA, links1 [0], "#B5");
            Assert.AreSame(linkA, links2 [0], "#B6");
            Assert.AreSame(linkB, links1 [1], "#B7");
            Assert.AreSame(linkB, links2 [1], "#B8");

            LinkLabel.LinkCollection links3 = new LinkLabel.LinkCollection(
                l);
            Assert.AreEqual(2, links3.Count, "#C1");
#if NET_2_0
            Assert.IsFalse(links3.LinksAdded, "#C2");
#endif
            Assert.AreSame(linkA, links3 [0], "#C3");
            Assert.AreSame(linkB, links3 [1], "#C4");
        }
コード例 #5
0
ファイル: AboutDialog.cs プロジェクト: yj490732088/Dithering
        private bool HasLink(LinkLabel.LinkCollection links, int position)
        {
            bool result;

            result = false;

            if (links.LinksAdded)
            {
                for (int i = 0; i < links.Count; i++)
                {
                    LinkLabel.Link link;

                    link = links[i];

                    if (position >= link.Start && position <= link.Start + link.Length)
                    {
                        result = true;
                        break;
                    }
                }
            }

            return(result);
        }
コード例 #6
0
ファイル: ORMDiagramSpy.cs プロジェクト: ozialien/NORMA
 private void RebuildWatermark()
 {
     if (myDiagramSetChanged)
     {
         myDiagramSetChanged = false;
         LinkLabel watermarkLabel = myWatermarkLabel;
         Store     store          = myStore;
         ReadOnlyCollection <Diagram> diagrams;
         int diagramCount;
         LinkLabel.LinkCollection links = watermarkLabel.Links;
         if (store == null ||
             store.Disposed ||
             0 == (diagramCount = (diagrams = store.ElementDirectory.FindElements <Diagram>(true)).Count))
         {
             watermarkLabel.Text = ResourceStrings.DiagramSpyNoSelection;
             links.Clear();
         }
         else
         {
             Diagram[] diagramArray = new Diagram[diagramCount];
             diagrams.CopyTo(diagramArray, 0);
             Partition targetPartition = store.DefaultPartition;
             Array.Sort <Diagram>(
                 diagramArray,
                 delegate(Diagram left, Diagram right)
             {
                 // Filter diagrams, such as the context window, that are not in the default partition
                 if (left.Partition != targetPartition)
                 {
                     if (right.Partition == targetPartition)
                     {
                         return(1);
                     }
                 }
                 else if (right.Partition != targetPartition)
                 {
                     return(-1);
                 }
                 return(string.Compare(left.Name, right.Name, StringComparison.CurrentCultureIgnoreCase));
             });
             for (int i = diagramCount - 1; i >= 0; --i)
             {
                 if (diagramArray[i].Partition == targetPartition)
                 {
                     break;
                 }
                 --diagramCount;
             }
             if (diagramCount == 0)
             {
                 watermarkLabel.Text = ResourceStrings.DiagramSpyNoSelection;
                 links.Clear();
             }
             else
             {
                 StringBuilder builder         = new StringBuilder(ResourceStrings.DiagramSpyDiagramListStart);
                 string        listSeparator   = CultureInfo.CurrentCulture.TextInfo.ListSeparator + " ";
                 int           separatorLength = listSeparator.Length;
                 int           offset          = builder.Length;
                 links.Clear();
                 for (int i = 0; i < diagramCount; ++i)
                 {
                     Diagram diagram     = diagramArray[i];
                     string  diagramName = diagram.Name;
                     int     nameLength  = diagramName.Length;
                     if (i != 0)
                     {
                         offset += separatorLength;
                         builder.Append(listSeparator);
                     }
                     builder.Append(diagramName);
                     links.Add(offset, nameLength, diagram);
                     offset += nameLength;
                 }
                 watermarkLabel.Text = builder.ToString();
             }
         }
     }
 }